http://stare.cz/~hans/.tmp/opencore-amr-0.1.2.tar.gz
This is a port of opencore-amr, which is an implementation of the Adaptive Multi Rate speech codec that seems to be used by many modern mobile devices (such as my android). (This is my first new port - please be gentle.) The main motivation is to have AMR support in SoX (which will be the next step if this goes in). Neither libsndfile nor libaudiofile support AMR. Tested on amd64 and i386. Issues: (1) It comes with the Apache License 2.0; I am not sure what that means for the PERMIT_* variables; I asked upstream, but someone here surely knows. (2) With USE_LIBTOOL=Yes, the build fails in a strange way (see below). Without USE_LIBTOOL, everything goes fine. But I don't know enough about libtool to spot the exact problem (see my guess below, though). Comments? Jan # make ===> Configuring for opencore-amr-0.1.2 configure: WARNING: unrecognized options: --disable-silent-rules configure: loading site script /usr/ports/infrastructure/db/config.site checking for a BSD-compatible install... /usr/bin/install -c -o root -g bin [configures fine] ===> Building for opencore-amr-0.1.2 Making all in amrnb [builds fine, until] c++ -shared -fPIC -DPIC -o .libs/libopencore-amrnb.so.0.2 -I../oscl -I../opencore/codecs_v2/audio/gsm_amr/amr_nb/dec/src -I../opencore/codecs_v2/audio/gsm_amr/amr_nb/common/include -I../opencore/codecs_v2/audio/gsm_amr/amr_nb/dec/include -I../opencore/codecs_v2/audio/gsm_amr/common/dec/include -I../opencore/codecs_v2/audio/gsm_amr/amr_nb/enc/src -x c -std=c99 -O2 -pipe .libs/wrapper.o .libs/agc.o .libs/amrdecode.o .libs/a_refl.o .libs/b_cn_cod.o .libs/bgnscd.o .libs/c_g_aver.o .libs/d1035pf.o .libs/d2_11pf.o .libs/d2_9pf.o .libs/d3_14pf.o .libs/d4_17pf.o .libs/d8_31pf.o .libs/dec_amr.o .libs/dec_gain.o .libs/dec_input_format_tab.o .libs/dec_lag3.o .libs/dec_lag6.o .libs/d_gain_c.o .libs/d_gain_p.o .libs/d_plsf_3.o .libs/d_plsf_5.o .libs/d_plsf.o .libs/dtx_dec.o .libs/ec_gains.o .libs/ex_ctrl.o .libs/if2_to_ets.o .libs/int_lsf.o .libs/lsp_avg.o .libs/ph_disp.o .libs/post_pro.o .libs/preemph.o .libs/pstfilt.o .libs/qgain475_tab.o .libs/sp_dec.o .libs/wmf_to_ets.o .libs/amrencode.o .libs/autocorr.o .libs/c1035pf.o .libs/c2_11pf.o .libs/c2_9pf.o .libs/c3_14pf.o .libs/c4_17pf.o .libs/c8_31pf.o .libs/calc_cor.o .libs/calc_en.o .libs/cbsearch.o .libs/cl_ltp.o .libs/cod_amr.o .libs/convolve.o .libs/cor_h.o .libs/cor_h_x2.o .libs/cor_h_x.o .libs/corrwght_tab.o .libs/div_32.o .libs/dtx_enc.o .libs/enc_lag3.o .libs/enc_lag6.o .libs/enc_output_format_tab.o .libs/ets_to_if2.o .libs/ets_to_wmf.o .libs/g_adapt.o .libs/gain_q.o .libs/g_code.o .libs/g_pitch.o .libs/hp_max.o .libs/inter_36.o .libs/inter_36_tab.o .libs/l_abs.o .libs/lag_wind.o .libs/lag_wind_tab.o .libs/l_comp.o .libs/levinson.o .libs/l_extract.o .libs/lflg_upd.o .libs/l_negate.o .libs/lpc.o .libs/ol_ltp.o .libs/pitch_fr.o .libs/pitch_ol.o .libs/p_ol_wgh.o .libs/pre_big.o .libs/pre_proc.o .libs/prm2bits.o .libs/qgain475.o .libs/qgain795.o .libs/q_gain_c.o .libs/q_gain_p.o .libs/qua_gain.o .libs/s10_8pf.o .libs/set_sign.o .libs/sid_sync.o .libs/sp_enc.o .libs/spreproc.o .libs/spstproc.o .libs/ton_stab.o .libs/vad1.o .libs/add.o .libs/az_lsp.o .libs/bitno_tab.o .libs/bitreorder_tab.o .libs/bytesused.o .libs/c2_9pf_tab.o .libs/div_s.o .libs/extract_h.o .libs/extract_l.o .libs/gains_tbl.o .libs/gc_pred.o .libs/get_const_tbls.o .libs/gmed_n.o .libs/gray_tbl.o .libs/grid_tbl.o .libs/int_lpc.o .libs/inv_sqrt.o .libs/inv_sqrt_tbl.o .libs/l_deposit_h.o .libs/l_deposit_l.o .libs/log2.o .libs/log2_norm.o .libs/log2_tbl.o .libs/lsfwt.o .libs/l_shr_r.o .libs/lsp_az.o .libs/lsp.o .libs/lsp_lsf.o .libs/lsp_lsf_tbl.o .libs/lsp_tab.o .libs/mult_r.o .libs/negate.o .libs/norm_l.o .libs/norm_s.o .libs/overflow_tbl.o .libs/ph_disp_tab.o .libs/pow2.o .libs/pow2_tbl.o .libs/pred_lt.o .libs/q_plsf_3.o .libs/q_plsf_3_tbl.o .libs/q_plsf_5.o .libs/q_plsf_5_tbl.o .libs/q_plsf.o .libs/qua_gain_tbl.o .libs/reorder.o .libs/residu.o .libs/round.o .libs/set_zero.o .libs/shr.o .libs/shr_r.o .libs/sqrt_l.o .libs/sqrt_l_tbl.o .libs/sub.o .libs/syn_filt.o .libs/weight_a.o .libs/window_tab.o -L.libs -lm .libs/wrapper.o:1: error: stray '\177' in program .libs/wrapper.o:1: error: stray '\2' in program .libs/wrapper.o:1: error: stray '\1' in program .libs/wrapper.o:1: error: stray '\1' in program - and similarly for every *.o file entioned in the above line; there seems to be an error message for almost every char on almost evry 'line' of these files. .libs/agc.o:1: error: stray '\177' in program .libs/agc.o:1: error: stray '\2' in program .libs/agc.o:1: error: stray '\1' in program .libs/agc.o:1: error: stray '\1' in program ... etc ... .libs/window_tab.o:54: error: stray '\340' in program .libs/window_tab.o:54: error: stray '\1' in program .libs/window_tab.o:54:1326: warning: null character(s) ignored .libs/window_tab.o:54:1347: warning: null character(s) ignored .libs/window_tab.o:54:1361: warning: null character(s) ignored .libs/window_tab.o:54:1375: warning: null character(s) ignored .libs/window_tab.o:54:1388: warning: null character(s) ignored .libs/window_tab.o:54:1389: warning: no newline at end of file Without USE_LIBTOOL, it builds fine; the line above then becomes libtool: link: c++ -shared -fPIC -DPIC .libs/wrapper.o .libs/agc.o .libs/amrdecode.o .libs/a_refl.o .libs/b_cn_cod.o .libs/bgnscd.o .libs/c_g_aver.o .libs/d1035pf.o .libs/d2_11pf.o .libs/d2_9pf.o .libs/d3_14pf.o .libs/d4_17pf.o .libs/d8_31pf.o .libs/dec_amr.o .libs/dec_gain.o .libs/dec_input_format_tab.o .libs/dec_lag3.o .libs/dec_lag6.o .libs/d_gain_c.o .libs/d_gain_p.o .libs/d_plsf_3.o .libs/d_plsf_5.o .libs/d_plsf.o .libs/dtx_dec.o .libs/ec_gains.o .libs/ex_ctrl.o .libs/if2_to_ets.o .libs/int_lsf.o .libs/lsp_avg.o .libs/ph_disp.o .libs/post_pro.o .libs/preemph.o .libs/pstfilt.o .libs/qgain475_tab.o .libs/sp_dec.o .libs/wmf_to_ets.o .libs/amrencode.o .libs/autocorr.o .libs/c1035pf.o .libs/c2_11pf.o .libs/c2_9pf.o .libs/c3_14pf.o .libs/c4_17pf.o .libs/c8_31pf.o .libs/calc_cor.o .libs/calc_en.o .libs/cbsearch.o .libs/cl_ltp.o .libs/cod_amr.o .libs/convolve.o .libs/cor_h.o .libs/cor_h_x2.o .libs/cor_h_x.o .libs/corrwght_tab.o .libs/div_32.o .libs/dtx_enc.o .libs/enc_lag3.o .libs/enc_lag6.o .libs/enc_output_format_tab.o .libs/ets_to_if2.o .libs/ets_to_wmf.o .libs/g_adapt.o .libs/gain_q.o .libs/g_code.o .libs/g_pitch.o .libs/hp_max.o .libs/inter_36.o .libs/inter_36_tab.o .libs/l_abs.o .libs/lag_wind.o .libs/lag_wind_tab.o .libs/l_comp.o .libs/levinson.o .libs/l_extract.o .libs/lflg_upd.o .libs/l_negate.o .libs/lpc.o .libs/ol_ltp.o .libs/pitch_fr.o .libs/pitch_ol.o .libs/p_ol_wgh.o .libs/pre_big.o .libs/pre_proc.o .libs/prm2bits.o .libs/qgain475.o .libs/qgain795.o .libs/q_gain_c.o .libs/q_gain_p.o .libs/qua_gain.o .libs/s10_8pf.o .libs/set_sign.o .libs/sid_sync.o .libs/sp_enc.o .libs/spreproc.o .libs/spstproc.o .libs/ton_stab.o .libs/vad1.o .libs/add.o .libs/az_lsp.o .libs/bitno_tab.o .libs/bitreorder_tab.o .libs/bytesused.o .libs/c2_9pf_tab.o .libs/div_s.o .libs/extract_h.o .libs/extract_l.o .libs/gains_tbl.o .libs/gc_pred.o .libs/get_const_tbls.o .libs/gmed_n.o .libs/gray_tbl.o .libs/grid_tbl.o .libs/int_lpc.o .libs/inv_sqrt.o .libs/inv_sqrt_tbl.o .libs/l_deposit_h.o .libs/l_deposit_l.o .libs/log2.o .libs/log2_norm.o .libs/log2_tbl.o .libs/lsfwt.o .libs/l_shr_r.o .libs/lsp_az.o .libs/lsp.o .libs/lsp_lsf.o .libs/lsp_lsf_tbl.o .libs/lsp_tab.o .libs/mult_r.o .libs/negate.o .libs/norm_l.o .libs/norm_s.o .libs/overflow_tbl.o .libs/ph_disp_tab.o .libs/pow2.o .libs/pow2_tbl.o .libs/pred_lt.o .libs/q_plsf_3.o .libs/q_plsf_3_tbl.o .libs/q_plsf_5.o .libs/q_plsf_5_tbl.o .libs/q_plsf.o .libs/qua_gain_tbl.o .libs/reorder.o .libs/residu.o .libs/round.o .libs/set_zero.o .libs/shr.o .libs/shr_r.o .libs/sqrt_l.o .libs/sqrt_l_tbl.o .libs/sub.o .libs/syn_filt.o .libs/weight_a.o .libs/window_tab.o -lm -o .libs/libopencore-amrnb.so.0.2 The difference seems to be this: It starts with 'libtool: link: ..." (this is *without* USE_LIBTOOL) '-o .libs/libopencore-amrnb.so.0.2' comes last It drops all the -I's and -L./libs It drops '-O2 -pipe' It drops '-x c -std=c99' - which I think was the problem, given the error messages above: the *.o files are indeed not C files, they are simply ELF object files produced by the previous runs of 'cc -c'. Why does USE_LIBTOOL put the '-x c' there?