# Determine by a grep 'ScriptAlias' of your Apache httpd.conf file
HTTP_CGIDIR=/var/www/cgi-bin
+# If your platform's linker expects a prefix on symbols generated from compiling C
+# source files, set LINKER_SYMBOL_PREFIX to that value. On some systems, exported symbols
+# from C source files are prefixed with '_', for example. If this value is not set
+# properly, the linker scripts that live in the '*.exports' files in various places
+# in this tree will unintentionally suppress symbols that should be visible
+# in the final binary objects.
+LINKER_SYMBOL_PREFIX=
+
# Uncomment this to use the older DSP routines
#_ASTCFLAGS+=-DOLD_DSP_ROUTINES
dist-clean::
rm -f .*.moduleinfo .moduleinfo
rm -f .*.makeopts .makeopts
+ rm -f *.exports
.%.moduleinfo: %.c
@echo "<member name=\"$*\" displayname=\"$(shell $(GREP) -e AST_MODULE_INFO $< | head -n 1 | cut -d '"' -f 2)\" remove_on_change=\"$(SUBDIR)/$*.o $(SUBDIR)/$*.so\">" > $@
#
# Makefile rules
#
-# Copyright (C) 2006-2008, Digium, Inc.
+# Copyright (C) 2006-2010, Digium, Inc.
#
# Kevin P. Fleming <kpfleming@digium.com>
#
$(CMD_PREFIX) $(CXX) -o $@ -E $< $(MAKE_DEPS) $(CXX_CFLAGS)
%.so: %.o
+ifeq ($(GNU_LD),1)
+ $(CMD_PREFIX) $(ASTTOPDIR)/build_tools/make_linker_version_script $* $(LINKER_SYMBOL_PREFIX)
+endif
$(ECHO_PREFIX) echo " [LD] $^ -> $@"
$(CMD_PREFIX) $(CC) $(STATIC_BUILD) -o $@ $(CC_LDFLAGS_SO) $^ $(CC_LIBS)
%.so: %.oo
+ifeq ($(GNU_LD),1)
+ $(CMD_PREFIX) $(ASTTOPDIR)/build_tools/make_linker_version_script $* $(LINKER_SYMBOL_PREFIX)
+endif
$(ECHO_PREFIX) echo " [LDXX] $^ -> $@"
$(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(CXX_LDFLAGS_SO) $^ $(CXX_LIBS)
+++ /dev/null
-{
- global:
- mm_critical;
- mm_diskerror;
- mm_dlog;
- mm_exists;
- mm_expunged;
- mm_fatal;
- mm_flags;
- mm_list;
- mm_log;
- mm_login;
- mm_lsub;
- mm_nocritical;
- mm_notify;
- mm_searched;
- mm_status;
- local:
- *;
-};
--- /dev/null
+{
+ global:
+ LINKER_SYMBOL_PREFIXmm_critical;
+ LINKER_SYMBOL_PREFIXmm_diskerror;
+ LINKER_SYMBOL_PREFIXmm_dlog;
+ LINKER_SYMBOL_PREFIXmm_exists;
+ LINKER_SYMBOL_PREFIXmm_expunged;
+ LINKER_SYMBOL_PREFIXmm_fatal;
+ LINKER_SYMBOL_PREFIXmm_flags;
+ LINKER_SYMBOL_PREFIXmm_list;
+ LINKER_SYMBOL_PREFIXmm_log;
+ LINKER_SYMBOL_PREFIXmm_login;
+ LINKER_SYMBOL_PREFIXmm_lsub;
+ LINKER_SYMBOL_PREFIXmm_nocritical;
+ LINKER_SYMBOL_PREFIXmm_notify;
+ LINKER_SYMBOL_PREFIXmm_searched;
+ LINKER_SYMBOL_PREFIXmm_status;
+ local:
+ *;
+};
--- /dev/null
+#!/bin/sh
+
+test -f ${1}.exports.in && ${AWK} "{sub(\"LINKER_SYMBOL_PREFIX\", \"${2}\"); print;}" ${1}.exports.in > ${1}.exports
+test -f ${1}.exports.in || rm -f ${1}.exports
$(OBJS): _ASTCFLAGS+=-DAST_MODULE=\"core\"
-$(MAIN_TGT): $(OBJS) editline/libedit.a db1-ast/libdb1.a $(AST_EMBED_LDSCRIPTS) asterisk.exports
+$(MAIN_TGT): $(OBJS) editline/libedit.a db1-ast/libdb1.a $(AST_EMBED_LDSCRIPTS)
@$(CC) -c -o buildinfo.o $(_ASTCFLAGS) buildinfo.c $(ASTCFLAGS)
$(ECHO_PREFIX) echo " [LD] $(OBJS) editline/libedit.a db1-ast/libdb1.a $(AST_EMBED_LDSCRIPTS) -> $@"
ifneq ($(findstring chan_h323,$(MENUSELECT_CHANNELS)),)
$(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(_ASTLDFLAGS) $(ASTLDFLAGS) $(H323LDFLAGS) $(OBJS) editline/libedit.a db1-ast/libdb1.a $(AST_EMBED_LDSCRIPTS) buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS) $(H323LDLIBS) $(GMIMELDFLAGS)
endif
+ifeq ($(GNU_LD),1)
+$(MAIN_TGT): asterisk.exports
+asterisk.exports: asterisk.exports.in
+ $(CMD_PREFIX) $(ASTTOPDIR)/build_tools/make_linker_version_script asterisk $(LINKER_SYMBOL_PREFIX)
+endif
+
clean::
rm -f asterisk
rm -f db1-ast/.*.d
+ rm -f asterisk.exports
@if [ -f editline/Makefile ]; then $(MAKE) -C editline distclean ; fi
@$(MAKE) -C db1-ast clean
@$(MAKE) -C stdtime clean
+++ /dev/null
-{
- global:
- ast_*;
- _ast_*;
- __ast_*;
- pbx_*;
- astman_*;
- ao2_*;
- __ao2_*;
- option_debug;
- option_verbose;
- dahdi_chan_name;
- dahdi_chan_name_len;
- dahdi_chan_mode;
- callerid_*;
- cid_di;
- cid_dr;
- clidsb;
- MD5*;
- sched_*;
- io_*;
- jb_*;
- aes_*;
- config_*;
- tdd_*;
- term_*;
- channelreloadreason2txt;
- devstate2str;
- __manager_event;
- dialed_interface_info;
- strsep;
- setenv;
- unsetenv;
- strcasestr;
- strnlen;
- strndup;
- vasprintf;
- asprintf;
- strtoq;
- getloadavg;
- ntohll;
- htonll;
- local:
- *;
-};
--- /dev/null
+{
+ global:
+ LINKER_SYMBOL_PREFIXast_*;
+ LINKER_SYMBOL_PREFIX_ast_*;
+ LINKER_SYMBOL_PREFIX__ast_*;
+ LINKER_SYMBOL_PREFIXpbx_*;
+ LINKER_SYMBOL_PREFIXastman_*;
+ LINKER_SYMBOL_PREFIXao2_*;
+ LINKER_SYMBOL_PREFIX__ao2_*;
+ LINKER_SYMBOL_PREFIXoption_debug;
+ LINKER_SYMBOL_PREFIXoption_verbose;
+ LINKER_SYMBOL_PREFIXdahdi_chan_name;
+ LINKER_SYMBOL_PREFIXdahdi_chan_name_len;
+ LINKER_SYMBOL_PREFIXdahdi_chan_mode;
+ LINKER_SYMBOL_PREFIXcallerid_*;
+ LINKER_SYMBOL_PREFIXcid_di;
+ LINKER_SYMBOL_PREFIXcid_dr;
+ LINKER_SYMBOL_PREFIXclidsb;
+ LINKER_SYMBOL_PREFIXMD5*;
+ LINKER_SYMBOL_PREFIXsched_*;
+ LINKER_SYMBOL_PREFIXio_*;
+ LINKER_SYMBOL_PREFIXjb_*;
+ LINKER_SYMBOL_PREFIXaes_*;
+ LINKER_SYMBOL_PREFIXconfig_*;
+ LINKER_SYMBOL_PREFIXtdd_*;
+ LINKER_SYMBOL_PREFIXterm_*;
+ LINKER_SYMBOL_PREFIXchannelreloadreason2txt;
+ LINKER_SYMBOL_PREFIXdevstate2str;
+ LINKER_SYMBOL_PREFIX__manager_event;
+ LINKER_SYMBOL_PREFIXdialed_interface_info;
+ LINKER_SYMBOL_PREFIXstrsep;
+ LINKER_SYMBOL_PREFIXsetenv;
+ LINKER_SYMBOL_PREFIXunsetenv;
+ LINKER_SYMBOL_PREFIXstrcasestr;
+ LINKER_SYMBOL_PREFIXstrnlen;
+ LINKER_SYMBOL_PREFIXstrndup;
+ LINKER_SYMBOL_PREFIXvasprintf;
+ LINKER_SYMBOL_PREFIXasprintf;
+ LINKER_SYMBOL_PREFIXstrtoq;
+ LINKER_SYMBOL_PREFIXgetloadavg;
+ LINKER_SYMBOL_PREFIXntohll;
+ LINKER_SYMBOL_PREFIXhtonll;
+ local:
+ *;
+};
+++ /dev/null
-{
- global:
- ast_adsi_available;
- ast_adsi_begin_download;
- ast_adsi_channel_restore;
- ast_adsi_clear_screen;
- ast_adsi_clear_soft_keys;
- ast_adsi_connect_session;
- ast_adsi_data_mode;
- ast_adsi_disconnect_session;
- ast_adsi_display;
- ast_adsi_download_connect;
- ast_adsi_download_disconnect;
- ast_adsi_end_download;
- ast_adsi_get_cpeid;
- ast_adsi_get_cpeinfo;
- ast_adsi_input_control;
- ast_adsi_input_format;
- ast_adsi_load_session;
- ast_adsi_load_soft_key;
- ast_adsi_print;
- ast_adsi_query_cpeid;
- ast_adsi_query_cpeinfo;
- ast_adsi_read_encoded_dtmf;
- ast_adsi_set_keys;
- ast_adsi_set_line;
- ast_adsi_transmit_message;
- ast_adsi_transmit_message_full;
- ast_adsi_unload_session;
- ast_adsi_voice_mode;
- local:
- *;
-};
--- /dev/null
+{
+ global:
+ LINKER_SYMBOL_PREFIXast_adsi_available;
+ LINKER_SYMBOL_PREFIXast_adsi_begin_download;
+ LINKER_SYMBOL_PREFIXast_adsi_channel_restore;
+ LINKER_SYMBOL_PREFIXast_adsi_clear_screen;
+ LINKER_SYMBOL_PREFIXast_adsi_clear_soft_keys;
+ LINKER_SYMBOL_PREFIXast_adsi_connect_session;
+ LINKER_SYMBOL_PREFIXast_adsi_data_mode;
+ LINKER_SYMBOL_PREFIXast_adsi_disconnect_session;
+ LINKER_SYMBOL_PREFIXast_adsi_display;
+ LINKER_SYMBOL_PREFIXast_adsi_download_connect;
+ LINKER_SYMBOL_PREFIXast_adsi_download_disconnect;
+ LINKER_SYMBOL_PREFIXast_adsi_end_download;
+ LINKER_SYMBOL_PREFIXast_adsi_get_cpeid;
+ LINKER_SYMBOL_PREFIXast_adsi_get_cpeinfo;
+ LINKER_SYMBOL_PREFIXast_adsi_input_control;
+ LINKER_SYMBOL_PREFIXast_adsi_input_format;
+ LINKER_SYMBOL_PREFIXast_adsi_load_session;
+ LINKER_SYMBOL_PREFIXast_adsi_load_soft_key;
+ LINKER_SYMBOL_PREFIXast_adsi_print;
+ LINKER_SYMBOL_PREFIXast_adsi_query_cpeid;
+ LINKER_SYMBOL_PREFIXast_adsi_query_cpeinfo;
+ LINKER_SYMBOL_PREFIXast_adsi_read_encoded_dtmf;
+ LINKER_SYMBOL_PREFIXast_adsi_set_keys;
+ LINKER_SYMBOL_PREFIXast_adsi_set_line;
+ LINKER_SYMBOL_PREFIXast_adsi_transmit_message;
+ LINKER_SYMBOL_PREFIXast_adsi_transmit_message_full;
+ LINKER_SYMBOL_PREFIXast_adsi_unload_session;
+ LINKER_SYMBOL_PREFIXast_adsi_voice_mode;
+ local:
+ *;
+};
+++ /dev/null
-{
- global:
- *ast_agi_register;
- *ast_agi_unregister;
- *ast_agi_register_multiple;
- *ast_agi_unregister_multiple;
- *ast_agi_send;
- local:
- *;
-};
--- /dev/null
+{
+ global:
+ LINKER_SYMBOL_PREFIX*ast_agi_register;
+ LINKER_SYMBOL_PREFIX*ast_agi_unregister;
+ LINKER_SYMBOL_PREFIX*ast_agi_register_multiple;
+ LINKER_SYMBOL_PREFIX*ast_agi_unregister_multiple;
+ LINKER_SYMBOL_PREFIX*ast_agi_send;
+ local:
+ *;
+};
+++ /dev/null
-{
- global:
- ast_*;
- calendar_config;
- local:
- *;
-};
--- /dev/null
+{
+ global:
+ LINKER_SYMBOL_PREFIXast_*;
+ LINKER_SYMBOL_PREFIXcalendar_config;
+ local:
+ *;
+};
+++ /dev/null
-{
- global:
- ast_fax_tech_register;
- ast_fax_tech_unregister;
- ast_fax_session_unreference;
- ast_fax_minrate;
- ast_fax_maxrate;
- ast_fax_state_to_str;
- local:
- *;
-};
--- /dev/null
+{
+ global:
+ LINKER_SYMBOL_PREFIXast_fax_tech_register;
+ LINKER_SYMBOL_PREFIXast_fax_tech_unregister;
+ LINKER_SYMBOL_PREFIXast_fax_session_unreference;
+ LINKER_SYMBOL_PREFIXast_fax_minrate;
+ LINKER_SYMBOL_PREFIXast_fax_maxrate;
+ LINKER_SYMBOL_PREFIXast_fax_state_to_str;
+ local:
+ *;
+};
+++ /dev/null
-{
- global:
- ast_bridge_call;
- ast_masq_park_call;
- ast_park_call;
- ast_parking_ext;
- ast_pickup_call;
- ast_pickup_ext;
- ast_register_feature;
- ast_unregister_feature;
- local:
- *;
-};
--- /dev/null
+{
+ global:
+ LINKER_SYMBOL_PREFIXast_bridge_call;
+ LINKER_SYMBOL_PREFIXast_masq_park_call;
+ LINKER_SYMBOL_PREFIXast_park_call;
+ LINKER_SYMBOL_PREFIXast_parking_ext;
+ LINKER_SYMBOL_PREFIXast_pickup_call;
+ LINKER_SYMBOL_PREFIXast_pickup_ext;
+ LINKER_SYMBOL_PREFIXast_register_feature;
+ LINKER_SYMBOL_PREFIXast_unregister_feature;
+ local:
+ *;
+};
+++ /dev/null
-{
- global:
- ast_aji_create_chat;
- ast_aji_disconnect;
- ast_aji_get_client;
- ast_aji_get_clients;
- ast_aji_increment_mid;
- ast_aji_invite_chat;
- ast_aji_join_chat;
- ast_aji_send;
- ast_aji_send_chat;
- local:
- *;
-};
--- /dev/null
+{
+ global:
+ LINKER_SYMBOL_PREFIXast_aji_create_chat;
+ LINKER_SYMBOL_PREFIXast_aji_disconnect;
+ LINKER_SYMBOL_PREFIXast_aji_get_client;
+ LINKER_SYMBOL_PREFIXast_aji_get_clients;
+ LINKER_SYMBOL_PREFIXast_aji_increment_mid;
+ LINKER_SYMBOL_PREFIXast_aji_invite_chat;
+ LINKER_SYMBOL_PREFIXast_aji_join_chat;
+ LINKER_SYMBOL_PREFIXast_aji_send;
+ LINKER_SYMBOL_PREFIXast_aji_send_chat;
+ local:
+ *;
+};
+++ /dev/null
-{
- global:
- *ast_monitor_change_fname;
- *ast_monitor_pause;
- *ast_monitor_setjoinfiles;
- *ast_monitor_start;
- *ast_monitor_stop;
- *ast_monitor_unpause;
- local:
- *;
-};
--- /dev/null
+{
+ global:
+ LINKER_SYMBOL_PREFIX*ast_monitor_change_fname;
+ LINKER_SYMBOL_PREFIX*ast_monitor_pause;
+ LINKER_SYMBOL_PREFIX*ast_monitor_setjoinfiles;
+ LINKER_SYMBOL_PREFIX*ast_monitor_start;
+ LINKER_SYMBOL_PREFIX*ast_monitor_stop;
+ LINKER_SYMBOL_PREFIX*ast_monitor_unpause;
+ local:
+ *;
+};
+++ /dev/null
-{
- global:
- ast_odbc_ast_str_SQLGetData;
- ast_odbc_backslash_is_escape;
- ast_odbc_clear_cache;
- ast_odbc_direct_execute;
- ast_odbc_find_column;
- ast_odbc_find_table;
- ast_odbc_prepare_and_execute;
- ast_odbc_release_obj;
- ast_odbc_request_obj;
- _ast_odbc_request_obj;
- ast_odbc_request_obj2;
- _ast_odbc_request_obj2;
- ast_odbc_retrieve_transaction_obj;
- ast_odbc_sanity_check;
- ast_odbc_smart_execute;
- local:
- *;
-};
--- /dev/null
+{
+ global:
+ LINKER_SYMBOL_PREFIXast_odbc_ast_str_SQLGetData;
+ LINKER_SYMBOL_PREFIXast_odbc_backslash_is_escape;
+ LINKER_SYMBOL_PREFIXast_odbc_clear_cache;
+ LINKER_SYMBOL_PREFIXast_odbc_direct_execute;
+ LINKER_SYMBOL_PREFIXast_odbc_find_column;
+ LINKER_SYMBOL_PREFIXast_odbc_find_table;
+ LINKER_SYMBOL_PREFIXast_odbc_prepare_and_execute;
+ LINKER_SYMBOL_PREFIXast_odbc_release_obj;
+ LINKER_SYMBOL_PREFIXast_odbc_request_obj;
+ LINKER_SYMBOL_PREFIX_ast_odbc_request_obj;
+ LINKER_SYMBOL_PREFIXast_odbc_request_obj2;
+ LINKER_SYMBOL_PREFIX_ast_odbc_request_obj2;
+ LINKER_SYMBOL_PREFIXast_odbc_retrieve_transaction_obj;
+ LINKER_SYMBOL_PREFIXast_odbc_sanity_check;
+ LINKER_SYMBOL_PREFIXast_odbc_smart_execute;
+ local:
+ *;
+};
+++ /dev/null
-{
- global:
- ast_pktccops_gate_alloc;
- local:
- *;
-};
--- /dev/null
+{
+ global:
+ LINKER_SYMBOL_PREFIXast_pktccops_gate_alloc;
+ local:
+ *;
+};
+++ /dev/null
-{
- global:
- *ast_smdi_interface_find;
- *ast_smdi_interface_unref;
- *ast_smdi_md_message_destroy;
- *ast_smdi_md_message_pop;
- *ast_smdi_md_message_putback;
- *ast_smdi_md_message_wait;
- *ast_smdi_mwi_message_destroy;
- *ast_smdi_mwi_message_pop;
- *ast_smdi_mwi_message_putback;
- *ast_smdi_mwi_message_wait;
- *ast_smdi_mwi_message_wait_station;
- *ast_smdi_mwi_set;
- *ast_smdi_mwi_unset;
- local:
- *;
-};
--- /dev/null
+{
+ global:
+ LINKER_SYMBOL_PREFIX*ast_smdi_interface_find;
+ LINKER_SYMBOL_PREFIX*ast_smdi_interface_unref;
+ LINKER_SYMBOL_PREFIX*ast_smdi_md_message_destroy;
+ LINKER_SYMBOL_PREFIX*ast_smdi_md_message_pop;
+ LINKER_SYMBOL_PREFIX*ast_smdi_md_message_putback;
+ LINKER_SYMBOL_PREFIX*ast_smdi_md_message_wait;
+ LINKER_SYMBOL_PREFIX*ast_smdi_mwi_message_destroy;
+ LINKER_SYMBOL_PREFIX*ast_smdi_mwi_message_pop;
+ LINKER_SYMBOL_PREFIX*ast_smdi_mwi_message_putback;
+ LINKER_SYMBOL_PREFIX*ast_smdi_mwi_message_wait;
+ LINKER_SYMBOL_PREFIX*ast_smdi_mwi_message_wait_station;
+ LINKER_SYMBOL_PREFIX*ast_smdi_mwi_set;
+ LINKER_SYMBOL_PREFIX*ast_smdi_mwi_unset;
+ local:
+ *;
+};
+++ /dev/null
-{
- global:
- ast_speech_change;
- ast_speech_change_results_type;
- ast_speech_change_state;
- ast_speech_destroy;
- ast_speech_dtmf;
- ast_speech_grammar_activate;
- ast_speech_grammar_deactivate;
- ast_speech_grammar_load;
- ast_speech_grammar_unload;
- ast_speech_new;
- ast_speech_register;
- ast_speech_results_free;
- ast_speech_results_get;
- ast_speech_start;
- ast_speech_unregister;
- ast_speech_write;
- local:
- *;
-};
--- /dev/null
+{
+ global:
+ LINKER_SYMBOL_PREFIXast_speech_change;
+ LINKER_SYMBOL_PREFIXast_speech_change_results_type;
+ LINKER_SYMBOL_PREFIXast_speech_change_state;
+ LINKER_SYMBOL_PREFIXast_speech_destroy;
+ LINKER_SYMBOL_PREFIXast_speech_dtmf;
+ LINKER_SYMBOL_PREFIXast_speech_grammar_activate;
+ LINKER_SYMBOL_PREFIXast_speech_grammar_deactivate;
+ LINKER_SYMBOL_PREFIXast_speech_grammar_load;
+ LINKER_SYMBOL_PREFIXast_speech_grammar_unload;
+ LINKER_SYMBOL_PREFIXast_speech_new;
+ LINKER_SYMBOL_PREFIXast_speech_register;
+ LINKER_SYMBOL_PREFIXast_speech_results_free;
+ LINKER_SYMBOL_PREFIXast_speech_results_get;
+ LINKER_SYMBOL_PREFIXast_speech_start;
+ LINKER_SYMBOL_PREFIXast_speech_unregister;
+ LINKER_SYMBOL_PREFIXast_speech_write;
+ local:
+ *;
+};