You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(56) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(254) |
Feb
(103) |
Mar
(19) |
Apr
(97) |
May
(98) |
Jun
(39) |
Jul
(59) |
Aug
(11) |
Sep
(70) |
Oct
(32) |
Nov
(33) |
Dec
(9) |
2008 |
Jan
(37) |
Feb
(51) |
Mar
(86) |
Apr
(9) |
May
(3) |
Jun
(55) |
Jul
(56) |
Aug
(54) |
Sep
(46) |
Oct
(91) |
Nov
(84) |
Dec
(52) |
2009 |
Jan
(26) |
Feb
(72) |
Mar
(60) |
Apr
(67) |
May
(60) |
Jun
(33) |
Jul
(5) |
Aug
(15) |
Sep
(61) |
Oct
(3) |
Nov
(22) |
Dec
(64) |
2010 |
Jan
(21) |
Feb
(1) |
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
(7) |
Sep
(1) |
Oct
|
Nov
(2) |
Dec
|
2011 |
Jan
(35) |
Feb
|
Mar
(7) |
Apr
(9) |
May
(1) |
Jun
|
Jul
(1) |
Aug
(3) |
Sep
(7) |
Oct
(6) |
Nov
(2) |
Dec
(24) |
2012 |
Jan
(55) |
Feb
(8) |
Mar
(36) |
Apr
(8) |
May
(2) |
Jun
(4) |
Jul
(5) |
Aug
(5) |
Sep
(5) |
Oct
(5) |
Nov
|
Dec
(2) |
2013 |
Jan
(43) |
Feb
(23) |
Mar
(11) |
Apr
(2) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2014 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(6) |
Nov
|
Dec
(6) |
2015 |
Jan
|
Feb
(8) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(3) |
Nov
|
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
(14) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2019 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2020 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(50) |
Sep
(3) |
Oct
|
Nov
(1) |
Dec
|
2021 |
Jan
(1) |
Feb
(2) |
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2024 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: mansr <ma...@us...> - 2024-05-30 13:46:53
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, master has been updated via f3094754a7c2a7e55c35621d20fa9945736e72df (commit) from 507b669990d051546050eb912c9fd75fe22e97fc (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f3094754a7c2a7e55c35621d20fa9945736e72df Author: Mans Rullgard <ma...@ma...> Date: Thu May 30 14:46:01 2024 +0100 rate: add some sanity checking Fail with error message instead of crashing with insane invocations such as: sox -r 3e-6 -n -n rate 16k diff --git a/src/rate.c b/src/rate.c index 0aea6db0..e02f7134 100644 --- a/src/rate.c +++ b/src/rate.c @@ -213,7 +213,7 @@ static void dft_stage_fn(stage_t * p, fifo_t * output_fifo) } } -static void dft_stage_init( +static int dft_stage_init( unsigned instance, double Fp, double Fs, double Fn, double att, double phase, stage_t * stage, int L, int M) { @@ -229,6 +229,12 @@ static void dft_stage_init( else f->post_peak = num_taps / 2; dft_length = lsx_set_dft_length(num_taps); + + if (L > dft_length) { + lsx_fail("invalid DFT parameters"); + return SOX_EINVAL; + } + f->coefs = calloc(dft_length, sizeof(*f->coefs)); for (i = 0; i < num_taps; ++i) f->coefs[(i + dft_length - num_taps + 1) & (dft_length - 1)] @@ -246,6 +252,8 @@ static void dft_stage_init( stage->L = L; stage->step.parts.integer = abs(3-M) == 1 && Fs == 1? -M/2 : M; stage->dft_filter_num = instance; + + return SOX_SUCCESS; } #include "rate_filters.h" @@ -271,7 +279,7 @@ typedef enum { rolloff_none, rolloff_small /* <= 0.01 dB */, rolloff_medium /* <= 0.35 dB */ } rolloff_t; -static void rate_init( +static int rate_init( /* Private work areas (to be supplied by the client): */ rate_t * p, /* Per audio channel. */ rate_shared_t * shared, /* Between channels (undergoing same rate change)*/ @@ -299,6 +307,7 @@ static void rate_init( int mode = rolloff > rolloff_small? factor > 1 || bw_pc > LOW_Q_BW0_PC : ceil(2 + (bits - 17) / 4); stage_t * s; + int err; assert(factor > 0); assert(!bits || (15 <= bits && bits <= 33)); @@ -329,6 +338,7 @@ static void rate_init( L = preL * arbL, M = arbM * postM, x = (L|M)&1, L >>= !x, M >>= !x; if (iOpt && postL == 1 && (d = preL * arbL / arbM) > 4 && d != 5) { for (postL = 4, i = d / 16; i >>= 1; postL <<= 1); + lsx_debug("postL=%d", postL); arbM = arbM * postL / arbL / preL, arbL = 1, n = 0; } else if (rational && (max(L, M) < 3 + 2 * iOpt || L * M < 6 * iOpt)) preL = L, preM = M, arbM = arbL = postM = 1; @@ -339,7 +349,7 @@ static void rate_init( p->num_stages = shift + have_pre_stage + have_arb_stage + have_post_stage; if (!p->num_stages) - return; + return SOX_SUCCESS; p->stages = calloc(p->num_stages + 1, sizeof(*p->stages)); for (i = 0; i < p->num_stages; ++i) @@ -368,8 +378,11 @@ static void rate_init( lsx_debug("x=%g tbw_tighten=%g", x, tbw_tighten); } } - dft_stage_init(0, 1 - tbw0 * tbw_tighten, Fs_a, preM? max(preL, preM) : - arbM / arbL, att, phase, &pre_stage, preL, max(preM, 1)); + err = dft_stage_init(0, 1 - tbw0 * tbw_tighten, Fs_a, + preM ? max(preL, preM) : arbM / arbL, + att, phase, &pre_stage, preL, max(preM, 1)); + if (err) + return err; } if (!bits) { /* Quick and dirty arb stage: */ @@ -443,10 +456,13 @@ static void rate_init( } } - if (have_post_stage) - dft_stage_init(1, 1 - (1 - (1 - tbw0) * + if (have_post_stage) { + err = dft_stage_init(1, 1 - (1 - (1 - tbw0) * (upsample? factor * postL / postM : 1)) * tbw_tighten, Fs_a, (double)max(postL, postM), att, phase, &post_stage, postL, postM); + if (err) + return err; + } for (i = 0, s = p->stages; i < p->num_stages; ++i, ++s) { fifo_create(&s->fifo, (int)sizeof(sample_t)); @@ -455,6 +471,8 @@ static void rate_init( s->pre, s->pre_post - s->pre, s->preload, s->remL); } fifo_create(&s->fifo, (int)sizeof(sample_t)); + + return SOX_SUCCESS; } static void rate_process(rate_t * p) @@ -629,6 +647,7 @@ static int start(sox_effect_t * effp) { priv_t * p = (priv_t *) effp->priv; double out_rate = p->out_rate != 0 ? p->out_rate : effp->out_signal.rate; + int err; if (effp->in_signal.rate == out_rate) return SOX_EFF_NULL; @@ -638,9 +657,13 @@ static int start(sox_effect_t * effp) effp->out_signal.channels = effp->in_signal.channels; effp->out_signal.rate = out_rate; - rate_init(&p->rate, p->shared_ptr, effp->in_signal.rate/out_rate,p->bit_depth, - p->phase, p->bw_0dB_pc, p->anti_aliasing_pc, p->rolloff, !p->given_0dB_pt, - p->use_hi_prec_clock, p->coef_interp, p->max_coefs_size, p->noIOpt); + err = rate_init(&p->rate, p->shared_ptr, effp->in_signal.rate / out_rate, + p->bit_depth, p->phase, p->bw_0dB_pc, p->anti_aliasing_pc, p->rolloff, + !p->given_0dB_pt, p->use_hi_prec_clock, p->coef_interp, + p->max_coefs_size, p->noIOpt); + + if (err) + return err; if (!p->rate.num_stages) { lsx_warn("input and output rates too close, skipping resampling"); ----------------------------------------------------------------------- Summary of changes: src/rate.c | 43 +++++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-) hooks/post-receive -- sox |
From: mansr <ma...@us...> - 2024-05-23 19:03:39
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, master has been updated via 507b669990d051546050eb912c9fd75fe22e97fc (commit) from 42b3557e13e0fe01a83465b672d89faddbe65f49 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 507b669990d051546050eb912c9fd75fe22e97fc Author: Mans Rullgard <ma...@ma...> Date: Thu May 23 20:03:03 2024 +0100 spectrogram: fix crash if pixels per second exceeds sample rate diff --git a/src/spectrogram.c b/src/spectrogram.c index 3dcda69c..89ae1fbf 100644 --- a/src/spectrogram.c +++ b/src/spectrogram.c @@ -431,7 +431,7 @@ static int start(sox_effect_t *effp) actual = make_window(p, p->last_end = 0); lsx_debug("window_density=%g", actual / p->dft_size); p->step_size = (p->slack_overlap ? sqrt(actual * p->dft_size) : actual) + 0.5; - p->block_steps = effp->in_signal.rate / pixels_per_sec; + p->block_steps = max(effp->in_signal.rate / pixels_per_sec, 1); p->step_size = p->block_steps / ceil((double)p->block_steps / p->step_size) + 0.5; p->block_steps = floor((double)p->block_steps / p->step_size + 0.5); ----------------------------------------------------------------------- Summary of changes: src/spectrogram.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- sox |
From: Mans R. <ma...@us...> - 2021-05-09 20:24:16
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, master has been updated via 42b3557e13e0fe01a83465b672d89faddbe65f49 (commit) from 7524160b29a476f7e87bc14fddf12d349f9a3c5e (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 42b3557e13e0fe01a83465b672d89faddbe65f49 Author: Mans Rullgard <ma...@ma...> Date: Sun May 9 21:17:32 2021 +0100 mp3: fix error handling in rewrite_tags() The id3v2_size variable is set to the return value of the get_id3v2_tag_size() function which can be a negative error code. Change the variable type to match that of the function return value. diff --git a/src/mp3.c b/src/mp3.c index 9fe707c3..1fd144d1 100644 --- a/src/mp3.c +++ b/src/mp3.c @@ -825,7 +825,7 @@ static void rewrite_tags(sox_format_t * ft, uint64_t num_samples) priv_t *p = (priv_t *)ft->priv; off_t file_size; - size_t id3v2_size; + int id3v2_size; if (lsx_seeki(ft, (off_t)0, SEEK_END)) { lsx_warn("cannot update tags - seek to end failed"); ----------------------------------------------------------------------- Summary of changes: src/mp3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- sox |
From: Mans R. <ma...@us...> - 2021-02-01 13:13:13
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, master has been updated via 7524160b29a476f7e87bc14fddf12d349f9a3c5e (commit) from 6914142df69bd52979443e1cfeae205bcace8243 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 7524160b29a476f7e87bc14fddf12d349f9a3c5e Author: Mans Rullgard <ma...@ma...> Date: Mon Feb 1 13:11:25 2021 +0000 sox.1: fix example for mcompand The mcompand example was not properly updated after the switch from filter to sinc. Fix it. diff --git a/sox.1 b/sox.1 index 8aa2b371..1ea7694a 100644 --- a/sox.1 +++ b/sox.1 @@ -2448,7 +2448,7 @@ For example, the following (one long) command shows how multi-band companding is typically used in FM radio: .EX .ne 8 - play track1.wav gain \-3 sinc 8000\- 29 100 mcompand \\ + play track1.wav gain \-3 sinc \-n 29 \-b 100 8000 mcompand \\ \(dq0.005,0.1 \-47,\-40,\-34,\-34,\-17,\-33\(dq 100 \\ \(dq0.003,0.05 \-47,\-40,\-34,\-34,\-17,\-33\(dq 400 \\ \(dq0.000625,0.0125 \-47,\-40,\-34,\-34,\-15,\-33\(dq 1600 \\ ----------------------------------------------------------------------- Summary of changes: sox.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- sox |
From: Mans R. <ma...@us...> - 2021-02-01 13:12:27
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, master has been updated via 6914142df69bd52979443e1cfeae205bcace8243 (commit) via 63010290b20efc4ecbafc98ff34a937bdb40524b (commit) via 0637e2d9adc0744ae9d43702f7d882bd104106cd (commit) via 2c4a42e6b6392e0f2e3a33e75d267d66a9be3004 (commit) from ce770096cd06b1e581b37171f01bee2f25894e8a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 6914142df69bd52979443e1cfeae205bcace8243 Author: Mans Rullgard <ma...@ma...> Date: Mon May 22 17:55:37 2017 +0100 aiff: handle id3 tags diff --git a/src/aiff.c b/src/aiff.c index f25b5ebb..3a152c58 100644 --- a/src/aiff.c +++ b/src/aiff.c @@ -16,6 +16,7 @@ #include "sox_i.h" #include "aiff.h" +#include "id3.h" #include <time.h> /* for time stamping comments */ #include <stdlib.h> @@ -306,6 +307,13 @@ int lsx_aiffstartread(sox_format_t * ft) } free(copyright); } + else if (strncmp(buf, "ID3 ", 4) == 0) { + off_t offs; + lsx_readdw(ft, &chunksize); + offs = lsx_tell(ft); + lsx_id3_read_tag(ft, 0); + lsx_seeki(ft, offs + chunksize, SEEK_SET); + } else { if (lsx_eof(ft)) break; commit 63010290b20efc4ecbafc98ff34a937bdb40524b Author: Mans Rullgard <ma...@ma...> Date: Mon May 22 18:22:24 2017 +0100 id3: fix COMM frame handling The COMM frame uses a different layout than the Txxx frames and was being ignored. Fix this by checking the number and type of fields in each frame. diff --git a/src/id3.c b/src/id3.c index 2cb79be2..9cfb81c4 100644 --- a/src/id3.c +++ b/src/id3.c @@ -41,10 +41,33 @@ static id3_utf8_t * utf8_id3tag_findframe( { struct id3_frame const * frame = id3_tag_findframe(tag, frameid, index); if (frame) { - union id3_field const * field = id3_frame_field(frame, 1); - unsigned nstrings = id3_field_getnstrings(field); - while (nstrings--){ - id3_ucs4_t const * ucs4 = id3_field_getstrings(field, nstrings); + unsigned nfields = frame->nfields; + + while (nfields--) { + union id3_field const *field = id3_frame_field(frame, nfields); + int ftype = id3_field_type(field); + const id3_ucs4_t *ucs4 = NULL; + unsigned nstrings; + + switch (ftype) { + case ID3_FIELD_TYPE_STRING: + ucs4 = id3_field_getstring(field); + break; + + case ID3_FIELD_TYPE_STRINGFULL: + ucs4 = id3_field_getfullstring(field); + break; + + case ID3_FIELD_TYPE_STRINGLIST: + nstrings = id3_field_getnstrings(field); + while (nstrings--) { + ucs4 = id3_field_getstrings(field, nstrings); + if (ucs4) + break; + } + break; + } + if (ucs4) return id3_ucs4_utf8duplicate(ucs4); /* Must call free() on this */ } commit 0637e2d9adc0744ae9d43702f7d882bd104106cd Author: Mans Rullgard <ma...@ma...> Date: Mon May 22 17:56:02 2017 +0100 id3: handle TCOM frame diff --git a/src/id3.c b/src/id3.c index acd1c89f..2cb79be2 100644 --- a/src/id3.c +++ b/src/id3.c @@ -27,6 +27,7 @@ static char const * id3tagmap[][2] = {"TIT2", "Title"}, {"TPE1", "Artist"}, {"TALB", "Album"}, + {"TCOM", "Composer"}, {"TRCK", "Tracknumber"}, {"TDRC", "Year"}, {"TCON", "Genre"}, commit 2c4a42e6b6392e0f2e3a33e75d267d66a9be3004 Author: Mans Rullgard <ma...@ma...> Date: Sun Aug 30 22:02:32 2015 +0100 id3: make parsing available to all format handlers Several formats beside mp3 can use id3 tags. This makes it possible to parse them from their respective handlers. diff --git a/configure.ac b/configure.ac index 146d0d55..39306398 100644 --- a/configure.ac +++ b/configure.ac @@ -113,7 +113,6 @@ SOX_DL_LIB([mad], [mad.h], [mad], [mad_stream_buffer]) SOX_DL_LIB([lame], [lame/lame.h lame.h], [mp3lame], [lame_init]) SOX_DL_LIB([twolame], [twolame.h], [twolame], [twolame_init]) SOX_FMT_REQ([mp3], [MAD LAME TWOLAME]) -MP3_LIBS="$MP3_LIBS $ID3TAG_LIBS" SOX_FMT_PKG([oggvorbis], [ogg vorbis vorbisenc vorbisfile]) SOX_FMT_PKG([opus], [opusfile]) diff --git a/src/Makefile.am b/src/Makefile.am index f30402fd..fe024416 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -111,7 +111,12 @@ libsox_la_SOURCES += raw-fmt.c s1-fmt.c s2-fmt.c s3-fmt.c \ lu-fmt.c 8svx.c aiff-fmt.c aifc-fmt.c au.c avr.c cdr.c cvsd-fmt.c \ dvms-fmt.c dat.c hcom.c htk.c maud.c prc.c sf.c smp.c \ sounder.c soundtool.c sphere.c tx16w.c voc.c vox-fmt.c ima-fmt.c adpcm.c adpcm.h \ - ima_rw.c ima_rw.h wav.c wve.c xa.c nulfile.c f4-fmt.c f8-fmt.c gsrt.c + ima_rw.c ima_rw.h wav.c wve.c xa.c nulfile.c f4-fmt.c f8-fmt.c gsrt.c \ + id3.c id3.h + +if HAVE_ID3TAG + libsox_la_LIBADD += @ID3TAG_LIBS@ +endif pkglib_LTLIBRARIES = diff --git a/src/id3.c b/src/id3.c new file mode 100644 index 00000000..acd1c89f --- /dev/null +++ b/src/id3.c @@ -0,0 +1,203 @@ +/* libSoX MP3 utilities Copyright (c) 2007-9 SoX contributors + * + * This library 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.1 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 Lesser + * General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "sox_i.h" +#include "id3.h" + +#ifdef HAVE_ID3TAG + +#include <id3tag.h> + +static char const * id3tagmap[][2] = +{ + {"TIT2", "Title"}, + {"TPE1", "Artist"}, + {"TALB", "Album"}, + {"TRCK", "Tracknumber"}, + {"TDRC", "Year"}, + {"TCON", "Genre"}, + {"COMM", "Comment"}, + {"TPOS", "Discnumber"}, + {NULL, NULL} +}; + +static id3_utf8_t * utf8_id3tag_findframe( + struct id3_tag * tag, const char * const frameid, unsigned index) +{ + struct id3_frame const * frame = id3_tag_findframe(tag, frameid, index); + if (frame) { + union id3_field const * field = id3_frame_field(frame, 1); + unsigned nstrings = id3_field_getnstrings(field); + while (nstrings--){ + id3_ucs4_t const * ucs4 = id3_field_getstrings(field, nstrings); + if (ucs4) + return id3_ucs4_utf8duplicate(ucs4); /* Must call free() on this */ + } + } + return NULL; +} + +struct tag_info_node +{ + struct tag_info_node * next; + off_t start; + off_t end; +}; + +struct tag_info { + sox_format_t * ft; + struct tag_info_node * head; + struct id3_tag * tag; +}; + +static int add_tag(struct tag_info * info) +{ + struct tag_info_node * current; + off_t start, end; + id3_byte_t query[ID3_TAG_QUERYSIZE]; + id3_byte_t * buffer; + long size; + int result = 0; + + /* Ensure we're at the start of a valid tag and get its size. */ + if (ID3_TAG_QUERYSIZE != lsx_readbuf(info->ft, query, ID3_TAG_QUERYSIZE) || + !(size = id3_tag_query(query, ID3_TAG_QUERYSIZE))) { + return 0; + } + if (size < 0) { + if (0 != lsx_seeki(info->ft, size, SEEK_CUR) || + ID3_TAG_QUERYSIZE != lsx_readbuf(info->ft, query, ID3_TAG_QUERYSIZE) || + (size = id3_tag_query(query, ID3_TAG_QUERYSIZE)) <= 0) { + return 0; + } + } + + /* Don't read a tag more than once. */ + start = lsx_tell(info->ft); + end = start + size; + for (current = info->head; current; current = current->next) { + if (start == current->start && end == current->end) { + return 1; + } else if (start < current->end && current->start < end) { + return 0; + } + } + + buffer = lsx_malloc((size_t)size); + if (!buffer) { + return 0; + } + memcpy(buffer, query, ID3_TAG_QUERYSIZE); + if ((unsigned long)size - ID3_TAG_QUERYSIZE == + lsx_readbuf(info->ft, buffer + ID3_TAG_QUERYSIZE, (size_t)size - ID3_TAG_QUERYSIZE)) { + struct id3_tag * tag = id3_tag_parse(buffer, (size_t)size); + if (tag) { + current = lsx_malloc(sizeof(struct tag_info_node)); + if (current) { + current->next = info->head; + current->start = start; + current->end = end; + info->head = current; + if (info->tag && (info->tag->extendedflags & ID3_TAG_EXTENDEDFLAG_TAGISANUPDATE)) { + struct id3_frame * frame; + unsigned i; + for (i = 0; (frame = id3_tag_findframe(tag, NULL, i)); i++) { + id3_tag_attachframe(info->tag, frame); + } + id3_tag_delete(tag); + } else { + if (info->tag) { + id3_tag_delete(info->tag); + } + info->tag = tag; + } + } + } + } + free(buffer); + return result; +} + +void lsx_id3_read_tag(sox_format_t * ft, sox_bool search) +{ + struct tag_info info; + id3_utf8_t * utf8; + int i; + int has_id3v1 = 0; + + info.ft = ft; + info.head = NULL; + info.tag = NULL; + + /* + We look for: + ID3v1 at end (EOF - 128). + ID3v2 at start. + ID3v2 at end (but before ID3v1 from end if there was one). + */ + + if (search) { + if (0 == lsx_seeki(ft, -128, SEEK_END)) { + has_id3v1 = + add_tag(&info) && + 1 == ID3_TAG_VERSION_MAJOR(id3_tag_version(info.tag)); + } + if (0 == lsx_seeki(ft, 0, SEEK_SET)) { + add_tag(&info); + } + if (0 == lsx_seeki(ft, has_id3v1 ? -138 : -10, SEEK_END)) { + add_tag(&info); + } + } else { + add_tag(&info); + } + + if (info.tag && info.tag->frames) { + for (i = 0; id3tagmap[i][0]; ++i) { + if ((utf8 = utf8_id3tag_findframe(info.tag, id3tagmap[i][0], 0))) { + char * comment = lsx_malloc(strlen(id3tagmap[i][1]) + 1 + strlen((char *)utf8) + 1); + sprintf(comment, "%s=%s", id3tagmap[i][1], utf8); + sox_append_comment(&ft->oob.comments, comment); + free(comment); + free(utf8); + } + } + if ((utf8 = utf8_id3tag_findframe(info.tag, "TLEN", 0))) { + unsigned long tlen = strtoul((char *)utf8, NULL, 10); + if (tlen > 0 && tlen < ULONG_MAX) { + ft->signal.length= tlen; /* In ms; convert to samples later */ + lsx_debug("got exact duration from ID3 TLEN"); + } + free(utf8); + } + } + while (info.head) { + struct tag_info_node * head = info.head; + info.head = head->next; + free(head); + } + if (info.tag) { + id3_tag_delete(info.tag); + } +} + +#else + +/* Stub for format modules */ +void lsx_id3_read_tag(sox_format_t *ft, sox_bool search) { } + +#endif diff --git a/src/id3.h b/src/id3.h new file mode 100644 index 00000000..842e4d02 --- /dev/null +++ b/src/id3.h @@ -0,0 +1,25 @@ +/* libSoX MP3 utilities Copyright (c) 2007-9 SoX contributors + * + * This library 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.1 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 Lesser + * General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef SOX_ID3_H +#define SOX_ID3_H + +#include "sox_i.h" + +void lsx_id3_read_tag(sox_format_t *ft, sox_bool search); + +#endif diff --git a/src/libsox.sym b/src/libsox.sym index 8e217083..3962ea7d 100644 --- a/src/libsox.sym +++ b/src/libsox.sym @@ -15,6 +15,7 @@ lsx_find_file_extension lsx_flush lsx_getopt lsx_getopt_init +lsx_id3_read_tag lsx_lpc10_create_decoder_state lsx_lpc10_create_encoder_state lsx_lpc10_decode diff --git a/src/mp3-util.h b/src/mp3-util.h index feb53df9..d896f286 100644 --- a/src/mp3-util.h +++ b/src/mp3-util.h @@ -17,23 +17,6 @@ #include <sys/stat.h> -#ifdef USING_ID3TAG - -static char const * id3tagmap[][2] = -{ - {"TIT2", "Title"}, - {"TPE1", "Artist"}, - {"TALB", "Album"}, - {"TRCK", "Tracknumber"}, - {"TDRC", "Year"}, - {"TCON", "Genre"}, - {"COMM", "Comment"}, - {"TPOS", "Discnumber"}, - {NULL, NULL} -}; - -#endif /* USING_ID3TAG */ - #if defined(HAVE_LAME) static void write_comments(sox_format_t * ft) @@ -79,165 +62,6 @@ static void write_comments(sox_format_t * ft) #endif /* HAVE_LAME */ -#ifdef USING_ID3TAG - -static id3_utf8_t * utf8_id3tag_findframe( - struct id3_tag * tag, const char * const frameid, unsigned index) -{ - struct id3_frame const * frame = id3_tag_findframe(tag, frameid, index); - if (frame) { - union id3_field const * field = id3_frame_field(frame, 1); - unsigned nstrings = id3_field_getnstrings(field); - while (nstrings--){ - id3_ucs4_t const * ucs4 = id3_field_getstrings(field, nstrings); - if (ucs4) - return id3_ucs4_utf8duplicate(ucs4); /* Must call free() on this */ - } - } - return NULL; -} - -struct tag_info_node -{ - struct tag_info_node * next; - off_t start; - off_t end; -}; - -struct tag_info { - sox_format_t * ft; - struct tag_info_node * head; - struct id3_tag * tag; -}; - -static int add_tag(struct tag_info * info) -{ - struct tag_info_node * current; - off_t start, end; - id3_byte_t query[ID3_TAG_QUERYSIZE]; - id3_byte_t * buffer; - long size; - int result = 0; - - /* Ensure we're at the start of a valid tag and get its size. */ - if (ID3_TAG_QUERYSIZE != lsx_readbuf(info->ft, query, ID3_TAG_QUERYSIZE) || - !(size = id3_tag_query(query, ID3_TAG_QUERYSIZE))) { - return 0; - } - if (size < 0) { - if (0 != lsx_seeki(info->ft, size, SEEK_CUR) || - ID3_TAG_QUERYSIZE != lsx_readbuf(info->ft, query, ID3_TAG_QUERYSIZE) || - (size = id3_tag_query(query, ID3_TAG_QUERYSIZE)) <= 0) { - return 0; - } - } - - /* Don't read a tag more than once. */ - start = lsx_tell(info->ft); - end = start + size; - for (current = info->head; current; current = current->next) { - if (start == current->start && end == current->end) { - return 1; - } else if (start < current->end && current->start < end) { - return 0; - } - } - - buffer = lsx_malloc((size_t)size); - if (!buffer) { - return 0; - } - memcpy(buffer, query, ID3_TAG_QUERYSIZE); - if ((unsigned long)size - ID3_TAG_QUERYSIZE == - lsx_readbuf(info->ft, buffer + ID3_TAG_QUERYSIZE, (size_t)size - ID3_TAG_QUERYSIZE)) { - struct id3_tag * tag = id3_tag_parse(buffer, (size_t)size); - if (tag) { - current = lsx_malloc(sizeof(struct tag_info_node)); - if (current) { - current->next = info->head; - current->start = start; - current->end = end; - info->head = current; - if (info->tag && (info->tag->extendedflags & ID3_TAG_EXTENDEDFLAG_TAGISANUPDATE)) { - struct id3_frame * frame; - unsigned i; - for (i = 0; (frame = id3_tag_findframe(tag, NULL, i)); i++) { - id3_tag_attachframe(info->tag, frame); - } - id3_tag_delete(tag); - } else { - if (info->tag) { - id3_tag_delete(info->tag); - } - info->tag = tag; - } - } - } - } - free(buffer); - return result; -} - -static void read_comments(sox_format_t * ft) -{ - struct tag_info info; - id3_utf8_t * utf8; - int i; - int has_id3v1 = 0; - - info.ft = ft; - info.head = NULL; - info.tag = NULL; - - /* - We look for: - ID3v1 at end (EOF - 128). - ID3v2 at start. - ID3v2 at end (but before ID3v1 from end if there was one). - */ - - if (0 == lsx_seeki(ft, -128, SEEK_END)) { - has_id3v1 = - add_tag(&info) && - 1 == ID3_TAG_VERSION_MAJOR(id3_tag_version(info.tag)); - } - if (0 == lsx_seeki(ft, 0, SEEK_SET)) { - add_tag(&info); - } - if (0 == lsx_seeki(ft, has_id3v1 ? -138 : -10, SEEK_END)) { - add_tag(&info); - } - if (info.tag && info.tag->frames) { - for (i = 0; id3tagmap[i][0]; ++i) { - if ((utf8 = utf8_id3tag_findframe(info.tag, id3tagmap[i][0], 0))) { - char * comment = lsx_malloc(strlen(id3tagmap[i][1]) + 1 + strlen((char *)utf8) + 1); - sprintf(comment, "%s=%s", id3tagmap[i][1], utf8); - sox_append_comment(&ft->oob.comments, comment); - free(comment); - free(utf8); - } - } - if ((utf8 = utf8_id3tag_findframe(info.tag, "TLEN", 0))) { - unsigned long tlen = strtoul((char *)utf8, NULL, 10); - if (tlen > 0 && tlen < ULONG_MAX) { - ft->signal.length= tlen; /* In ms; convert to samples later */ - lsx_debug("got exact duration from ID3 TLEN"); - } - free(utf8); - } - } - while (info.head) { - struct tag_info_node * head = info.head; - info.head = head->next; - free(head); - } - if (info.tag) { - id3_tag_delete(info.tag); - } -} - -#endif /* USING_ID3TAG */ - #ifdef HAVE_MAD_H static unsigned long xing_frames(priv_t * p, struct mad_bitptr ptr, unsigned bitlen) diff --git a/src/mp3.c b/src/mp3.c index 33a371ed..9fe707c3 100644 --- a/src/mp3.c +++ b/src/mp3.c @@ -45,6 +45,7 @@ typedef enum { #ifdef USING_ID3TAG #include <id3tag.h> + #include "id3.h" #if defined(HAVE_UNISTD_H) #include <unistd.h> #elif defined(HAVE_IO_H) @@ -383,7 +384,7 @@ static int startread(sox_format_t * ft) ft->signal.length = SOX_UNSPEC; if (ft->seekable) { #ifdef USING_ID3TAG - read_comments(ft); + lsx_id3_read_tag(ft, sox_true); lsx_rewind(ft); if (!ft->signal.length) #endif ----------------------------------------------------------------------- Summary of changes: configure.ac | 1 - src/Makefile.am | 7 +- src/aiff.c | 8 ++ src/id3.c | 227 ++++++++++++++++++++++++++++++++++++++++++++++++ src/{f4-fmt.c => id3.h} | 10 ++- src/libsox.sym | 1 + src/mp3-util.h | 176 ------------------------------------- src/mp3.c | 3 +- 8 files changed, 251 insertions(+), 182 deletions(-) create mode 100644 src/id3.c copy src/{f4-fmt.c => id3.h} (82%) hooks/post-receive -- sox |
From: Mans R. <ma...@us...> - 2021-01-31 11:07:34
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, master has been updated via ce770096cd06b1e581b37171f01bee2f25894e8a (commit) via 6e278eeef31bcbdf84ce4a14c32cdadee4164871 (commit) via 021c7886e4ecfe58022848aa3f4877e1986e3089 (commit) via d68424fe69dec6bedd35bdaea03ecb3e7c3c6c1e (commit) from dd8b63bdc2966c931b73d5f7a17db336cbec6c21 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ce770096cd06b1e581b37171f01bee2f25894e8a Author: Mans Rullgard <ma...@ma...> Date: Sun Jan 31 10:59:16 2021 +0000 build: use FLAC_CFLAGS FLAC_CFLAGS is required if FLAC is installed outside the normal compiler search path as is often the case on BSD systems. diff --git a/src/optional-fmts.am b/src/optional-fmts.am index 098e76c6..ecdeaa48 100644 --- a/src/optional-fmts.am +++ b/src/optional-fmts.am @@ -78,6 +78,7 @@ endif if HAVE_FLAC if STATIC_FLAC libsox_la_SOURCES += flac.c + libsox_la_CFLAGS += @FLAC_CFLAGS@ if STATIC_LIBSOX_ONLY sox_LDADD += @FLAC_LIBS@ else @@ -85,6 +86,7 @@ else endif else libsox_fmt_flac_la_SOURCES = flac.c + libsox_fmt_opus_la_CFLAGS = @FLAC_CFLAGS@ libsox_fmt_flac_la_LIBADD = @FLAC_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_flac.la endif commit 6e278eeef31bcbdf84ce4a14c32cdadee4164871 Author: Mans Rullgard <ma...@ma...> Date: Fri Aug 21 00:39:04 2020 +0100 formats: clarify setting of reverse_bytes Factor out repeated conditions and merge the resulting if statement with the following one. This makes the intent clearer and silences a flurry of warnings from clang. diff --git a/src/formats.c b/src/formats.c index 6321a8ef..3fcf4382 100644 --- a/src/formats.c +++ b/src/formats.c @@ -302,23 +302,27 @@ char const * sox_find_comment(sox_comments_t comments, char const * id) static void set_endiannesses(sox_format_t * ft) { - if (ft->encoding.opposite_endian) - ft->encoding.reverse_bytes = (ft->handler.flags & SOX_FILE_ENDIAN)? - !(ft->handler.flags & SOX_FILE_ENDBIG) != MACHINE_IS_BIGENDIAN : sox_true; - else if (ft->encoding.reverse_bytes == sox_option_default) - ft->encoding.reverse_bytes = (ft->handler.flags & SOX_FILE_ENDIAN)? - !(ft->handler.flags & SOX_FILE_ENDBIG) == MACHINE_IS_BIGENDIAN : sox_false; + if (ft->handler.flags & SOX_FILE_ENDIAN) { + sox_bool file_is_bigendian = !(ft->handler.flags & SOX_FILE_ENDBIG); + + if (ft->encoding.opposite_endian) { + ft->encoding.reverse_bytes = file_is_bigendian != MACHINE_IS_BIGENDIAN; + lsx_report("`%s': overriding file-type byte-order", ft->filename); + } else if (ft->encoding.reverse_bytes == sox_option_default) { + ft->encoding.reverse_bytes = file_is_bigendian == MACHINE_IS_BIGENDIAN; + } + } else { + if (ft->encoding.opposite_endian) { + ft->encoding.reverse_bytes = sox_option_yes; + lsx_report("`%s': overriding machine byte-order", ft->filename); + } else if (ft->encoding.reverse_bytes == sox_option_default) { + ft->encoding.reverse_bytes = sox_option_no; + } + } /* FIXME: Change reports to suitable warnings if trying * to override something that can't be overridden. */ - if (ft->handler.flags & SOX_FILE_ENDIAN) { - if (ft->encoding.reverse_bytes == (sox_option_t) - (!(ft->handler.flags & SOX_FILE_ENDBIG) != MACHINE_IS_BIGENDIAN)) - lsx_report("`%s': overriding file-type byte-order", ft->filename); - } else if (ft->encoding.reverse_bytes == sox_option_yes) - lsx_report("`%s': overriding machine byte-order", ft->filename); - if (ft->encoding.reverse_bits == sox_option_default) ft->encoding.reverse_bits = !!(ft->handler.flags & SOX_FILE_BIT_REV); else if (ft->encoding.reverse_bits == !(ft->handler.flags & SOX_FILE_BIT_REV)) commit 021c7886e4ecfe58022848aa3f4877e1986e3089 Author: Mans Rullgard <ma...@ma...> Date: Wed Aug 5 14:16:13 2020 +0100 stats: improve bit depth reporting [bug #267] The right-hand figure reported for bit depth is somewhat erratic, often changing if the signal is inverted or changed in other ways that should not affect the value. Change the calculation such that it always reports the number of bits required to represent the largest sample value, positive or negative, in two's complement notation. diff --git a/src/stats.c b/src/stats.c index e1d1809c..259daaae 100644 --- a/src/stats.c +++ b/src/stats.c @@ -130,10 +130,9 @@ static unsigned bit_depth(uint32_t mask, double min, double max, unsigned * x) for (; result && !(mask & 1); --result, mask >>= 1); if (x) *x = result; - mask = SOX_FLOAT_64BIT_TO_SAMPLE(max, dummy); - if (min < 0) - mask |= ~(SOX_FLOAT_64BIT_TO_SAMPLE(min, dummy) << 1); - for (; result && !(mask & SOX_SAMPLE_MIN); --result, mask <<= 1); + min = -fmax(fabs(min), fabs(max)); + mask = SOX_FLOAT_64BIT_TO_SAMPLE(min, dummy) << 1; + for (; result && (mask & SOX_SAMPLE_MIN); --result, mask <<= 1); return result; } commit d68424fe69dec6bedd35bdaea03ecb3e7c3c6c1e Author: Nigel Kettlewell <nj...@nj...> Date: Tue Apr 19 16:02:19 2016 +0100 formats: release stdin/stdout reservation on close Reset the stdin/out_in_use_by globals when closing the associated file, letting stdin/out be opened again. Without this, they remain blocked forever once opened. diff --git a/src/formats.c b/src/formats.c index 2adc88b3..6321a8ef 100644 --- a/src/formats.c +++ b/src/formats.c @@ -1057,8 +1057,15 @@ int sox_close(sox_format_t * ft) else result = ft->handler.stopwrite? (*ft->handler.stopwrite)(ft) : SOX_SUCCESS; } - if (ft->fp && ft->fp != stdin && ft->fp != stdout) + if (ft->fp == stdin) { + sox_globals.stdin_in_use_by = NULL; + } else if (ft->fp == stdout) { + fflush(stdout); + sox_globals.stdout_in_use_by = NULL; + } else if (ft->fp) { xfclose(ft->fp, ft->io_type); + } + free(ft->priv); free(ft->filename); free(ft->filetype); ----------------------------------------------------------------------- Summary of changes: src/formats.c | 39 +++++++++++++++++++++++++-------------- src/optional-fmts.am | 2 ++ src/stats.c | 7 +++---- 3 files changed, 30 insertions(+), 18 deletions(-) hooks/post-receive -- sox |
From: Latocha, M. <lat...@ii...> - 2020-11-24 09:57:22
|
Hello all, I was working on adding full support for RIFF64 files and it is now possible to work with files bigger than 4 GB. The changes were mostly made on writeheader in wav.c, it will now add a JUNK chunk if the file is smaller than 4 GB, if the wav file exceeds 4 GB the RIFF header and data size will be rewritten, the JUNK chunk will be changed to a ds64 chunk which includes, the riff size, data size, samples written and a table containing other big chunks. Please take a look at the attached patch note to examine the changes. Best, Michael Latocha |
From: Mans R. <ma...@us...> - 2020-09-22 14:52:38
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, new-build has been deleted was 5723b6f4909d5dab6b03d5cca2320b7475d7c2fc ----------------------------------------------------------------------- 5723b6f4909d5dab6b03d5cca2320b7475d7c2fc build: do not link format modules against libsox ----------------------------------------------------------------------- hooks/post-receive -- sox |
From: Mans R. <ma...@us...> - 2020-09-22 14:51:43
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, master has been updated via dd8b63bdc2966c931b73d5f7a17db336cbec6c21 (commit) via d9ae1ddfa60693082e7bf4521dfea5e7f31bd4df (commit) via 6ff0e9322f9891f5a6ac6c9b3bceffbfca16bec3 (commit) via 24ee773f822912b646ad607b3c24cf697dc7c669 (commit) via 3d55a193330e1da375d33d394275e56602e67d7e (commit) via cb3ed3c66705de48de46142afff3d58053754267 (commit) via abec85c63ad421d738ff8010d8d2f4bcecf2027e (commit) via 34d888657de9e564bf08f4d04e677653e28277fd (commit) via 579fae4ab7d37423aee4d9cdf7a29f9d96c2b764 (commit) via c6e78c58c8ce634b69f979327113e45a805fdaae (commit) via ad5ad532f9d5f8e0374109f56de2501069a9b601 (commit) via c24cef3604881210fd050dcd54b2745e0f233555 (commit) via 112850412a34ca6845b6354ec5d8ec98cd74ee1c (commit) via 3b6c27419f736c2dfa3b2bf3d34dfe656832c464 (commit) via fb92431481665504f559f1c4308b4c28339db499 (commit) via 70c85915eace83142b84e4f65f5db421cf0c09e3 (commit) via 8f6aaf97498ff7edc0dcb30192542b4d5924411c (commit) via 85fe52b1ef225112e9021958f56182a6d50325b8 (commit) via 794e0d43cbb12de4273a2636552ae5a63892ba97 (commit) via f6cb823170d75133d29d25f8119ba44405832859 (commit) via a9bfd57f807d18ad4a35b5a9a8fd3efaee4759a8 (commit) via 76c68d7bfc449e9044fc9b7bee6e60d699715bed (commit) via e5ec5718b28a6cb0101a67d79b5fc9e6c89217f9 (commit) via 0a60ae593cc8a64bb3d6a6c5f0f5df684f64a993 (commit) from 07de8a77a862e6800b95a8d3a61c6b4e41362755 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit dd8b63bdc2966c931b73d5f7a17db336cbec6c21 Author: Mans Rullgard <ma...@ma...> Date: Wed Aug 26 15:30:27 2020 +0100 build: do not link format modules against libsox The format modules should use symbols from the host process. Linking them against libsox can result in additional copies thereof being loaded with unpredictable results. Platforms that disallow unresolved symbols in shared libraries cannot support this feature. diff --git a/src/optional-fmts.am b/src/optional-fmts.am index 50bce818..098e76c6 100644 --- a/src/optional-fmts.am +++ b/src/optional-fmts.am @@ -10,7 +10,7 @@ else endif else libsox_fmt_alsa_la_SOURCES = alsa.c - libsox_fmt_alsa_la_LIBADD = libsox.la @ALSA_LIBS@ + libsox_fmt_alsa_la_LIBADD = @ALSA_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_alsa.la endif endif @@ -25,7 +25,7 @@ else endif else libsox_fmt_amr_nb_la_SOURCES = amr-nb.c amr.h - libsox_fmt_amr_nb_la_LIBADD = libsox.la @AMRNB_LIBS@ + libsox_fmt_amr_nb_la_LIBADD = @AMRNB_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_amr_nb.la endif endif @@ -40,7 +40,7 @@ else endif else libsox_fmt_amr_wb_la_SOURCES = amr-wb.c amr.h - libsox_fmt_amr_wb_la_LIBADD = libsox.la @AMRWB_LIBS@ + libsox_fmt_amr_wb_la_LIBADD = @AMRWB_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_amr_wb.la endif endif @@ -55,7 +55,7 @@ else endif else libsox_fmt_ao_la_SOURCES = ao.c - libsox_fmt_ao_la_LIBADD = libsox.la @AO_LIBS@ + libsox_fmt_ao_la_LIBADD = @AO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_ao.la endif endif @@ -70,7 +70,7 @@ else endif else libsox_fmt_coreaudio_la_SOURCES = coreaudio.c - libsox_fmt_coreaudio_la_LIBADD = libsox.la @COREAUDIO_LIBS@ + libsox_fmt_coreaudio_la_LIBADD = @COREAUDIO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_coreaudio.la endif endif @@ -85,7 +85,7 @@ else endif else libsox_fmt_flac_la_SOURCES = flac.c - libsox_fmt_flac_la_LIBADD = libsox.la @FLAC_LIBS@ + libsox_fmt_flac_la_LIBADD = @FLAC_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_flac.la endif endif @@ -100,7 +100,7 @@ else endif else libsox_fmt_gsm_la_SOURCES = gsm.c - libsox_fmt_gsm_la_LIBADD = libsox.la @LIBGSM_LIBS@ + libsox_fmt_gsm_la_LIBADD = @LIBGSM_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_gsm.la endif endif @@ -117,7 +117,7 @@ endif else libsox_fmt_lpc10_la_SOURCES = lpc10.c libsox_fmt_lpc10_la_CFLAGS = @LPC10_CFLAGS@ - libsox_fmt_lpc10_la_LIBADD = libsox.la @LPC10_LIBS@ + libsox_fmt_lpc10_la_LIBADD = @LPC10_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_lpc10.la endif endif @@ -132,7 +132,7 @@ else endif else libsox_fmt_mp3_la_SOURCES = mp3.c mp3-util.h - libsox_fmt_mp3_la_LIBADD = libsox.la @MP3_LIBS@ + libsox_fmt_mp3_la_LIBADD = @MP3_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_mp3.la endif endif @@ -149,7 +149,7 @@ endif else libsox_fmt_opus_la_SOURCES = opus.c libsox_fmt_opus_la_CFLAGS = @OPUS_CFLAGS@ - libsox_fmt_opus_la_LIBADD = libsox.la @OPUS_LIBS@ + libsox_fmt_opus_la_LIBADD = @OPUS_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_opus.la endif endif @@ -159,7 +159,6 @@ if STATIC_OSS libsox_la_SOURCES += oss.c else libsox_fmt_oss_la_SOURCES = oss.c - libsox_fmt_oss_la_LIBADD = libsox.la pkglib_LTLIBRARIES += libsox_fmt_oss.la endif endif @@ -174,7 +173,7 @@ else endif else libsox_fmt_pulseaudio_la_SOURCES = pulseaudio.c - libsox_fmt_pulseaudio_la_LIBADD = libsox.la @PULSEAUDIO_LIBS@ + libsox_fmt_pulseaudio_la_LIBADD = @PULSEAUDIO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_pulseaudio.la endif endif @@ -189,7 +188,7 @@ else endif else libsox_fmt_waveaudio_la_SOURCES = waveaudio.c - libsox_fmt_waveaudio_la_LIBADD = libsox.la @WAVEAUDIO_LIBS@ + libsox_fmt_waveaudio_la_LIBADD = @WAVEAUDIO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_waveaudio.la endif endif @@ -205,7 +204,7 @@ else endif else libsox_fmt_sndio_la_SOURCES = sndio.c - libsox_fmt_sndio_la_LIBADD = libsox.la @SNDIO_LIBS@ + libsox_fmt_sndio_la_LIBADD = @SNDIO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_sndio.la endif endif @@ -215,7 +214,6 @@ if STATIC_SUNAUDIO libsox_la_SOURCES += sunaudio.c else libsox_fmt_sunau_la_SOURCES = sunaudio.c - libsox_fmt_sunau_la_LIBADD = libsox.la pkglib_LTLIBRARIES += libsox_fmt_sunau.la endif endif @@ -230,7 +228,7 @@ else endif else libsox_fmt_vorbis_la_SOURCES = vorbis.c - libsox_fmt_vorbis_la_LIBADD = libsox.la @OGGVORBIS_LIBS@ + libsox_fmt_vorbis_la_LIBADD = @OGGVORBIS_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_vorbis.la endif endif @@ -245,7 +243,7 @@ else endif else libsox_fmt_wavpack_la_SOURCES = wavpack.c - libsox_fmt_wavpack_la_LIBADD = libsox.la @WAVPACK_LIBS@ + libsox_fmt_wavpack_la_LIBADD = @WAVPACK_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_wavpack.la endif endif @@ -263,34 +261,34 @@ endif else libsox_fmt_sndfile_la_SOURCES = sndfile.c libsox_fmt_sndfile_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_sndfile_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_sndfile_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_caf_la_SOURCES = caf.c sndfile.c libsox_fmt_caf_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_caf_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_caf_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_mat4_la_SOURCES = mat4.c sndfile.c libsox_fmt_mat4_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_mat4_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_mat4_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_mat5_la_SOURCES = mat5.c sndfile.c libsox_fmt_mat5_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_mat5_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_mat5_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_paf_la_SOURCES = paf.c sndfile.c libsox_fmt_paf_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_paf_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_paf_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_fap_la_SOURCES = fap.c sndfile.c libsox_fmt_fap_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_fap_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_fap_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_w64_la_SOURCES = w64.c sndfile.c libsox_fmt_w64_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_w64_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_w64_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_xi_la_SOURCES = xi.c sndfile.c libsox_fmt_wi_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_xi_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_xi_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_pvf_la_SOURCES = pvf.c sndfile.c libsox_fmt_pvf_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_pvf_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_pvf_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_sd2_la_SOURCES = sd2.c sndfile.c libsox_fmt_sd2_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_sd2_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_sd2_la_LIBADD = @LIBSNDFILE_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_sndfile.la libsox_fmt_caf.la libsox_fmt_mat4.la libsox_fmt_mat5.la libsox_fmt_paf.la libsox_fmt_fap.la libsox_fmt_w64.la libsox_fmt_xi.la libsox_fmt_pvf.la libsox_fmt_sd2.la endif endif commit d9ae1ddfa60693082e7bf4521dfea5e7f31bd4df Author: Mans Rullgard <ma...@ma...> Date: Tue Aug 25 19:48:07 2020 +0100 build: replace exported symbols regex with a list Replace the hideous exported symbols regex with a simple list. The regex is completely unreadable and causes build errors on Solaris. diff --git a/src/Makefile.am b/src/Makefile.am index c4cd6c71..f30402fd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -87,7 +87,9 @@ endif libsox_la_CFLAGS = libsox_la_LDFLAGS = -no-undefined -version-info @SHLIB_VERSION@ \ - -export-symbols-regex '^(sox_.*|lsx_(([cm]|re)alloc.*|check_read_params|(close|open)_dllibrary|(debug(_more|_most)?|fail|report|warn)_impl|eof|error|fail_errno|filelength|find_(enum_(text|value)|file_extension)|flush|getopt(_init)?|lpc10_(create_(de|en)coder_state|(de|en)code)|raw(read|write)|read(_b_buf|buf|chars)|rewind|seeki|sigfigs3p?|strcasecmp|strdup|tell|unreadb|write(b|_b_buf|buf|s)))$$' + -export-symbols $(srcdir)/libsox.sym + +EXTRA_libsox_la_DEPENDENCIES = $(srcdir)/libsox.sym if HAVE_LIBLTDL libsox_la_CFLAGS += $(LIBLTDL_CFLAGS) diff --git a/src/libsox.sym b/src/libsox.sym new file mode 100644 index 00000000..8e217083 --- /dev/null +++ b/src/libsox.sym @@ -0,0 +1,95 @@ +lsx_calloc +lsx_check_read_params +lsx_close_dllibrary +lsx_debug_impl +lsx_debug_more_impl +lsx_debug_most_impl +lsx_eof +lsx_error +lsx_fail_errno +lsx_fail_impl +lsx_filelength +lsx_find_enum_text +lsx_find_enum_value +lsx_find_file_extension +lsx_flush +lsx_getopt +lsx_getopt_init +lsx_lpc10_create_decoder_state +lsx_lpc10_create_encoder_state +lsx_lpc10_decode +lsx_lpc10_encode +lsx_malloc +lsx_open_dllibrary +lsx_rawread +lsx_rawwrite +lsx_read_b_buf +lsx_readbuf +lsx_readchars +lsx_realloc +lsx_realloc_array +lsx_report_impl +lsx_rewind +lsx_seeki +lsx_sigfigs3 +lsx_sigfigs3p +lsx_strcasecmp +lsx_strdup +lsx_tell +lsx_unreadb +lsx_warn_impl +lsx_write_b_buf +lsx_writeb +lsx_writebuf +lsx_writes +sox_add_effect +sox_append_comment +sox_append_comments +sox_basename +sox_close +sox_copy_comments +sox_create_effect +sox_create_effects_chain +sox_delete_comments +sox_delete_effect +sox_delete_effect_last +sox_delete_effects +sox_delete_effects_chain +sox_effect_options +sox_effects_clips +sox_find_comment +sox_find_effect +sox_find_format +sox_flow_effects +sox_format_init +sox_format_quit +sox_format_supports_encoding +sox_get_effect_fns +sox_get_effects_globals +sox_get_encodings_info +sox_get_format_fns +sox_get_globals +sox_init +sox_init_encodinginfo +sox_is_playlist +sox_num_comments +sox_open_mem_read +sox_open_mem_write +sox_open_memstream_write +sox_open_read +sox_open_write +sox_parse_playlist +sox_pop_effect_last +sox_precision +sox_push_effect_last +sox_quit +sox_read +sox_seek +sox_stop_effect +sox_strerror +sox_trim_clear_start +sox_trim_get_start +sox_version +sox_version_info +sox_write +sox_write_handler commit 6ff0e9322f9891f5a6ac6c9b3bceffbfca16bec3 Author: Mans Rullgard <ma...@ma...> Date: Fri Aug 14 13:35:31 2020 +0100 build: rewrite most of configure using new macros Most of the checks are now a single macro call, making the configure script much easier to read. The use of --enable and --with flags has been streamlined. Optional libraries use --with-foo, some of them accepting the value 'dyn' to activate runtime dynamic loading. The optional formats use --enable, again with the value 'dyn' enabling dynamic loading. As before, the default behaviour is to detect libraries and enable support for available ones. If an explicitly enabled feature has a dependency that is missing or disabled, an error is reported. diff --git a/INSTALL b/INSTALL index 3e8e272e..170a5e70 100644 --- a/INSTALL +++ b/INSTALL @@ -53,17 +53,14 @@ To compile and install SoX (executables, libraries, manual pages) with a default configuration for your platform, run the following commands: ./configure - make -s + make make install -There should be no errors and few, if any, warnings during the `make --s' stage. Any warnings about pointer mismatch or conversion should +There should be no errors and few, if any, warnings during the `make' +stage. Any warnings about pointer mismatch or conversion should be treated with deep suspicion. -The `make install' command may require `root' priviliges; for example, -on some systems, the following modification to the command is needed: - - sudo make install +The `make install' command may require `root' priviliges. To run a selection of tests on the installed sox executable: @@ -81,8 +78,8 @@ Again, `root' priviliges may be needed at the install stages. -Custom build options on a POSIX system --------------------------------------- +Custom build options +-------------------- Selection of optional libraries and of other build options can be made by adding parameters to the `./configure' command line (above). Run @@ -104,61 +101,33 @@ For example, ./configure --with-distro='Super Linux OS 6.1' If any libraries are installed in a non-standard locations in your -system then you can use the CPPFLAGS and LDFLAGS variables to allow -configure to find them. For example: - -./configure CPPFLAGS="-I/home/sox/include -I/usr/local/multimedia/include" LDFLAGS="-L/home/sox/lib -L/usr/local/multimedia/lib" - -If you are compiling under cygwin and would like to create a static -sox.exe using mingw libraries then you can use the following: - -./configure CC="gcc -mno-cygwin" --disable-shared - -The next cygwin example is used to build the cygwin version of SoX that is -distributed by the project. It tells gcc to prefer static libraries -over dynamic ones and to use some static libraries compiled manually -and installed under /usr/local. - -./configure LDFLAGS="-static -L/usr/local/lib" CPPFLAGS=-I/usr/local/include - -You can run "cygcheck.exe src/sox.exe" after compiling to see which -dynamic DLL's will be required to be distributed with the cygwin -executable. +system, the compiler and linker must be informed of this. Often, +environment variables can be used for this purpose. For example, if +using the GNU or Clang/LLVM toolchains, the following might be used in +a Bourne-compatible shell: -Alternatively, you can make use of the "cygbuild" script distributed -with SoX source that is used to automate all steps of building -a win32 package. "osxbuild" script is used to automate all steps -of building a MacOS X package. +export CPATH=/usr/local/include +export LIBRARY_PATH=/usr/local/lib -Newer versions of SoX include support for loading libraries for -file formats at runtime. The main usage of this feature is to -allow shipping SoX without dependencies on external libraries -that are not globally used or have redistribution restrictions. -If you experience problems with this then you may wish to disable -this feature: +For other compilers and shells, consult their respective manuals. -./configure --without-libltdl +Optional features +----------------- -Also, the default behavior even when libltdl is used is to link -all file format handlers into libsox as there is a performance -hit when dynamically loading external libraries. To force a format -handler to be built as a dynamically loaded module, pass "dyn" to -its --with-* option. For example, to build pulseaudio handler as -an external dynamic library: +Support for some file formats is optional and controlled by --enable-* +flags to configure. If the value "dyn" is passed to these flags, +e.g. --enable-flac=dyn, the corresponding code is built as a module +and loaded at runtime. -./configure --with-pulseaudio=dyn +Use of external libraries is controlled by --with-* flags. Some of +these accept the value "dyn" to enable runtime loading of the library. -A subset of external libraries can be configured to be dlopen()'ed -at run time instead of being linked in. This will allow one to -distribute a binary with optional features that only require -a user to install the missing libraries into their system. This -can be enabled using: +The runtime loading feature is mainly useful for distributing the +"sox" executable to systems that may not have all the external +libraries installed. ---enable-dl-lame ---enable-dl-mad ---enable-dl-sndfile ---enable-dl-amrnb ---enable-dl-amrwb +For a complete list of optional formats and libraries, including which +support runtime loading, refer to the "configure --help" output. Testing ------- diff --git a/configure.ac b/configure.ac index b9822490..146d0d55 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,8 @@ LT_INIT([win32-dll]) AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=name], [Provide distribution name]), - AC_DEFINE_UNQUOTED(DISTRO, ["$with_distro"], [Distribution name])) + AC_DEFINE_UNQUOTED(DISTRO, ["$with_distro"], [Distribution name]) + SOX_REPORT([build], [distro name], [${with_distro:-unspecified}])) dnl Checks for programs. AC_PROG_CC @@ -58,6 +59,7 @@ AC_FUNC_FSEEKO dnl Check for OpenMP AC_OPENMP CFLAGS="$CFLAGS $OPENMP_CFLAGS" +SOX_REPORT([other], [OpenMP], [${OPENMP_CFLAGS:-no}]) if test "$ac_cv_header_glob_h" != yes; then AC_CHECK_FUNC([FindFirstFileA], [ @@ -66,470 +68,99 @@ if test "$ac_cv_header_glob_h" != yes; then fi AM_CONDITIONAL(HAVE_WIN32_GLOB, test "$HAVE_WIN32_GLOB" = yes) -AC_ARG_WITH(dyn-default,AS_HELP_STRING([--with-dyn-default],[Default to loading optional formats dynamically]),opt_default=dyn,opt_default=yes) - -AC_ARG_WITH(libltdl, - AS_HELP_STRING([--without-libltdl], - [Don't try to use libltdl for external dynamic library support]), - with_libltdl=$withval, with_libltdl=default) - -if test "$with_libltdl" = "default"; then - dnl Default to no libltdl support when building only static libraries - if test "$enable_shared" != "no"; then - using_libltdl=yes - else - using_libltdl=no - fi - with_libltdl="yes" -else - using_libltdl=$with_libltdl -fi - -dnl Check if ltdl should be enabled. -if test "$using_libltdl" != "no"; then - AC_CHECK_HEADERS(ltdl.h, - AC_CHECK_LIB(ltdl, lt_dlinit, LIBLTDL="$LIBLTDL -lltdl", - using_libltdl=no), using_libltdl=no) -fi -if test "$using_libltdl" = yes; then - AC_DEFINE([HAVE_LIBLTDL], 1, [Define to 1 if you have libltdl]) -fi -AM_CONDITIONAL(HAVE_LIBLTDL, test x$using_libltdl = xyes) -AC_SUBST(LIBLTDL) - - -dnl Check for magic library -AC_ARG_WITH(magic, - AS_HELP_STRING([--without-magic], - [Don't try to use magic])) -using_magic=no -if test "$with_magic" != "no"; then - using_magic=yes - AC_CHECK_HEADER(magic.h, - [AC_CHECK_LIB(magic, magic_open, MAGIC_LIBS="-lmagic",using_magic=no)], - using_magic=no) - if test "$with_magic" = "yes" -a "$using_magic" = "no"; then - AC_MSG_FAILURE([cannot find magic]) - fi -fi -if test "$using_magic" = yes; then - AC_DEFINE(HAVE_MAGIC, 1, [Define to 1 if you have magic.]) -fi -AM_CONDITIONAL(HAVE_MAGIC, test x$using_magic = xyes) -AC_SUBST(MAGIC_LIBS) - - - -dnl Check for png libraries -AC_ARG_WITH(png, - AS_HELP_STRING([--without-png], - [Don't try to use png])) -using_png=no -if test "$with_png" != "no"; then - AC_CHECK_HEADERS(png.h libpng/png.h,using_png=yes) - if test "$using_png" = "yes"; then - AC_CHECK_LIB(png, png_set_rows, PNG_LIBS="$PNG_LIBS -lpng -lz", - [AC_CHECK_LIB(png12, png_set_rows, - PNG_LIBS="$PNG_LIBS -lpng12 -lz", - using_png=no, -lz)], -lz) - fi - if test "$with_png" = "yes" -a "$using_png" = "no"; then - AC_MSG_FAILURE([cannot find png]) - fi -fi -if test "$using_png" = yes; then - AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have PNG.]) -fi -AM_CONDITIONAL(HAVE_PNG, test x$using_png = xyes) -AC_SUBST(PNG_LIBS) - - - -dnl Test for LADSPA -AC_ARG_WITH(ladspa, - AS_HELP_STRING([--without-ladspa], [Don't try to use LADSPA])) -using_ladspa=no -if test "$with_ladspa" != "no" -a "$using_libltdl" = "yes"; then - using_ladspa=yes - AC_DEFINE(HAVE_LADSPA_H, 1, [1 if should enable LADSPA]) -fi -LADSPA_PATH=${libdir}/ladspa -AC_ARG_WITH(ladspa-path, - AS_HELP_STRING([--with-ladspa-path], [Default search path for LADSPA plugins])) -AC_SUBST(LADSPA_PATH) - - - -dnl Check for MAD libraries -AC_ARG_WITH(mad, - AS_HELP_STRING([--without-mad], - [Don't try to use MAD (MP3 Audio Decoder)])) -using_mad=no -if test "$with_mad" != "no"; then - using_mad=yes - AC_CHECK_HEADERS(mad.h,, using_mad=no) - AC_MSG_CHECKING([whether to dlopen mad]) - AC_ARG_ENABLE(dl_mad, - AS_HELP_STRING([--enable-dl-mad], [Dlopen mad instead of linking in.]), - enable_dl_mad=$enableval, enable_dl_mad=no) - AC_MSG_RESULT($enable_dl_mad) - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_mad" = "xyes"; then - AC_DEFINE(DL_MAD, 1, [Define to dlopen() mad.]) - else - enable_dl_mad="no" - AC_CHECK_LIB(mad, mad_stream_buffer, MP3_LIBS="$MP3_LIBS -lmad",using_mad=no) - if test "$with_mad" = "yes" -a "$using_mad" = "no"; then - AC_MSG_FAILURE([cannot find libmad]) - fi - fi -fi - - - -dnl Check for id3tag libraries -AC_ARG_WITH(id3tag, - AS_HELP_STRING([--without-id3tag], - [Don't try to use id3tag])) -using_id3tag=no -if test "$with_id3tag" != "no"; then - using_id3tag=yes - AC_CHECK_HEADER(id3tag.h, - [AC_CHECK_LIB(id3tag, id3_file_open, MP3_LIBS="$MP3_LIBS -lid3tag -lz",using_id3tag=no, -lz)], - using_id3tag=no) - if test "$with_id3tag" = "yes" -a "$using_id3tag" = "no"; then - AC_MSG_FAILURE([cannot find id3tag]) - fi -fi -if test "$using_id3tag" = yes; then - AC_DEFINE(HAVE_ID3TAG, 1, [Define to 1 if you have id3tag.]) -fi -AM_CONDITIONAL(HAVE_ID3TAG, test x$using_id3tag = xyes) - - - -dnl Check for LAME library. -AC_ARG_WITH(lame, - AS_HELP_STRING([--without-lame], - [Don't try to use LAME (LAME Ain't an MP3 Encoder)])) -using_lame=no -if test "$with_lame" != "no"; then - using_lame=yes - AC_MSG_CHECKING([whether to dlopen lame]) - AC_ARG_ENABLE(dl_lame, - AS_HELP_STRING([--enable-dl-lame], [Dlopen lame instead of linking in.]), - enable_dl_lame=$enableval, enable_dl_lame=no) - AC_MSG_RESULT($enable_dl_lame) - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_lame" = "xyes"; then - AC_DEFINE(DL_LAME, 1, [Define to dlopen() lame.]) - else - enable_dl_lame="no" - AC_CHECK_HEADERS(lame/lame.h,, - [AC_CHECK_HEADERS(lame.h, [], using_lame=no)]) - AC_CHECK_LIB(mp3lame, lame_get_lametag_frame, MP3_LIBS="$MP3_LIBS -lmp3lame", using_lame=no) - if test "$with_lame" = "yes" -a "$using_lame" = "no"; then - AC_MSG_FAILURE([cannot find LAME]) - fi - fi -fi - - - -dnl Check for Twolame library -AC_ARG_WITH(twolame, - AS_HELP_STRING([--without-twolame], - [Don't try to use Twolame (MP2 Audio Encoder)])) -using_twolame=no -if test "$with_twolame" != "no"; then - using_twolame=yes - AC_CHECK_HEADERS(twolame.h,, using_twolame=no) - AC_MSG_CHECKING([whether to dlopen twolame]) - AC_ARG_ENABLE(dl_twolame, - AS_HELP_STRING([--enable-dl-twolame], [Dlopen twolame instead of linking in.]), - enable_dl_twolame=$enableval, enable_dl_twolame=no) - AC_MSG_RESULT($enable_dl_twolame) - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_twolame" = "xyes"; then - AC_DEFINE(DL_TWOLAME, 1, [Define to dlopen() libtwolame.]) - else - enable_dl_twolame="no" - AC_CHECK_LIB(twolame, twolame_init, MP3_LIBS="$MP3_LIBS -ltwolame",using_twolame=no) - if test "$with_twolame" = "yes" -a "$using_twolame" = "no"; then - AC_MSG_FAILURE([cannot find libtwolame]) - fi - fi -fi - -# Check for libgsm -HAVE_LIBGSM=yes -AC_CHECK_HEADERS(gsm/gsm.h, , - [AC_CHECK_HEADERS(gsm.h, , HAVE_LIBGSM=no)]) - AC_CHECK_LIB(gsm, gsm_create, [ - AC_DEFINE(HAVE_LIBGSM, 1, [Define if libgsm is available]) - LIBGSM_LIBS="$LIBGSM_LIBS -lgsm"], HAVE_LIBGSM=no) -AC_SUBST(LIBGSM_LIBS) - - - -# Check for liblpc10 -found_liblpc10=yes -AC_CHECK_HEADERS(lpc10.h, , - [AC_CHECK_HEADERS(lpc10.h, ,found_liblpc10=no)]) - AC_CHECK_LIB(lpc10, create_lpc10_encoder_state, LPC10_LIBS="$LPC10_LIBS -llpc10", found_liblpc10=no) -if test "$found_liblpc10" = yes; then - AC_DEFINE(HAVE_LIBLPC10, 1, [Define if you are using an external liblpc10]) -else - LPC10_CFLAGS='-I${top_srcdir}/lpc10' - LPC10_LIBS=../lpc10/liblpc10.la -fi -AM_CONDITIONAL(HAVE_LIBLPC10, test x$found_liblpc10 = xyes) - - - -# Check for Ogg Vorbis -AC_OPTIONAL_FORMAT(oggvorbis, OGGVORBIS, [AC_CHECK_HEADER(vorbis/codec.h, - [AC_CHECK_LIB(ogg, ogg_packet_clear, OGGVORBIS_LIBS="$OGGVORBIS_LIBS -logg", using_oggvorbis=no) - AC_CHECK_LIB(vorbis, vorbis_analysis_headerout, OGGVORBIS_LIBS="-lvorbis $OGGVORBIS_LIBS", using_oggvorbis=no, $OGGVORBIS_LIBS) - AC_CHECK_LIB(vorbisfile, ov_clear, OGGVORBIS_LIBS="-lvorbisfile $OGGVORBIS_LIBS", using_oggvorbis=no, $OGGVORBIS_LIBS) - AC_CHECK_LIB(vorbisenc, vorbis_encode_init_vbr, OGGVORBIS_LIBS="-lvorbisenc $OGGVORBIS_LIBS", using_oggvorbis=no, $OGGVORBIS_LIBS)], - using_oggvorbis=no)]) - -# Check for Opus -AC_OPTIONAL_FORMAT(opus, OPUS, - [PKG_CHECK_MODULES(OPUS, [opusfile], [], using_opus=no)], - using_opus=no) - - -dnl Check for FLAC library -AC_OPTIONAL_FORMAT(flac, FLAC, - [PKG_CHECK_MODULES([FLAC], [flac], [], [using_flac=no])]) - - -tmp_using_amrwb=no -AC_CHECK_HEADERS(opencore-amrwb/dec_if.h, - [AC_CHECK_LIB(opencore-amrwb, D_IF_init, - [OPENCORE_AMRWB_LIBS="$OPENCORE_AMRWB_LIBS -lopencore-amrwb"; tmp_using_amrwb=$opt_default])]) -AC_CHECK_HEADERS(vo-amrwbenc/enc_if.h, - [AC_CHECK_LIB(vo-amrwbenc, E_IF_init, - [VO_AMRWBENC_LIBS="$VO_AMRWBENC_LIBS -lvo-amrwbenc"; tmp_using_amrwb=$opt_default])]) -AC_ARG_ENABLE(dl_opencore_amrwb, - AS_HELP_STRING([--enable-dl-opencore-amrwb], - [Dlopen opencore-amrbw instead of linking in.])) -AC_ARG_ENABLE(dl_vo_amrwbenc, - AS_HELP_STRING([--enable-dl-vo-amrwbenc], - [Dlopen vo-amrbwenc instead of linking in.])) -if test "$using_libltdl" != "yes"; then - enable_dl_opencore_amrwb=no - enable_dl_vo_amrwbenc=no -fi -if test "$enable_dl_opencore_amrwb" = "yes"; then - AC_DEFINE(DL_OPENCORE_AMRWB, 1, [Define to dlopen() opencore-amrwb.]) -else - AMRWB_LIBS="$AMRWB_LIBS $OPENCORE_AMRWB_LIBS" -fi -if test "$enable_dl_vo_amrwbenc" = "yes"; then - AC_DEFINE(DL_VO_AMRWBENC, 1, [Define to dlopen() vo-amrwbenc.]) -else - AMRWB_LIBS="$AMRWB_LIBS $VO_AMRWBENC_LIBS" -fi -AC_OPTIONAL_FORMAT(amrwb, AMRWB, [using_amrwb=$tmp_using_amrwb]) - -dnl When enable_dl_amrnb, do not let add libraries to be linked in -dnl since they will be dlopen()'ed instead. -ac_sox_save_AMRNB_LIBS="$AMRNB_LIBS" -tmp_using_amrnb=$opt_default -AC_CHECK_HEADERS(opencore-amrnb/interf_dec.h, - [AC_CHECK_LIB(opencore-amrnb, Decoder_Interface_init, - AMRNB_LIBS="$AMRNB_LIBS -lopencore-amrnb", tmp_using_amrnb=no)], - [tmp_using_amrnb=no]) -AC_ARG_ENABLE(dl_opencore_amrnb, - AS_HELP_STRING([--enable-dl-opencore-amrnb], - [Dlopen opencore-amrnb instead of linking in.])) -if test "$using_libltdl" = "yes" -a "$enable_dl_opencore_amrnb" = "yes"; then - AC_DEFINE(DL_OPENCORE_AMRNB, 1, [Define to dlopen() opencore-amrnb.]) - dnl When enable_dl_amrnb, do not let SOX_PATH_AMRNB add libraries - dnl to be linked in (since they will be dlopen()'ed instead). - AMRNB_LIBS="$ac_sox_save_AMRNB_LIBS" - dnl Force to using regardless if headers or libraries were found. - tmp_using_amrnb=yes -else - enable_dl_opencore_amrnb="no" -fi -AC_OPTIONAL_FORMAT(amrnb, AMRNB, [using_amrnb=$tmp_using_amrnb]) - - -AC_OPTIONAL_FORMAT(wavpack, WAVPACK, [AC_CHECK_HEADER(wavpack/wavpack.h, [AC_CHECK_LIB(wavpack, WavpackGetSampleRate, WAVPACK_LIBS="$WAVPACK_LIBS -lwavpack",using_wavpack=no)], using_wavpack=no)]) - - - -AC_OPTIONAL_FORMAT(sndio, SNDIO, [AC_CHECK_HEADER(sndio.h, [AC_CHECK_LIB(sndio, sio_open, SNDIO_LIBS="$SNDIO_LIBS -lsndio",using_sndio=no)], using_sndio=no)]) - - - -AC_OPTIONAL_FORMAT(coreaudio, COREAUDIO, [AC_CHECK_HEADER(CoreAudio/CoreAudio.h, [COREAUDIO_LIBS="$COREAUDIO_LIBS -Wl,-framework,CoreAudio"], using_coreaudio=no)]) - - - -AC_OPTIONAL_FORMAT(alsa, ALSA, [AC_CHECK_HEADER(alsa/asoundlib.h, [AC_CHECK_LIB(asound, snd_pcm_open, ALSA_LIBS="$ALSA_LIBS -lasound",using_alsa=no)], using_alsa=no)]) - - - -AC_OPTIONAL_FORMAT(ao, AO, [AC_CHECK_HEADER(ao/ao.h, [AC_CHECK_LIB(ao, ao_play, AO_LIBS="$AO_LIBS -lao",using_ao=no)], using_ao=no)]) - - - -AC_OPTIONAL_FORMAT(pulseaudio, PULSEAUDIO, [AC_CHECK_HEADER(pulse/simple.h, [AC_CHECK_LIB(pulse, pa_simple_new, PULSEAUDIO_LIBS="$PULSEAUDIO_LIBS -lpulse -lpulse-simple",using_pulseaudio=no,"-lpulse-simple")], using_pulseaudio=no)]) - - -AC_OPTIONAL_FORMAT(waveaudio, WAVEAUDIO, [AC_CHECK_HEADER(mmsystem.h, [WAVEAUDIO_LIBS="$WAVEAUDIO_LIBS -lwinmm"], using_waveaudio=no, [[#include <windows.h>]])]) - -dnl When enable_dl_sndfile, do not let SOX_PATH_SNDFILE add libraries -dnl to be linked in (since they will be dlopen()'ed instead). -ac_sox_save_SNDFILE_LIBS="$LIBSNDFILE_LIBS" -SOX_PATH_SNDFILE(tmp_using_sndfile=$opt_default, tmp_using_sndfile=no) -AC_ARG_ENABLE(dl_sndfile, - AS_HELP_STRING([--enable-dl-sndfile], - [Dlopen sndfile instead of linking in.]), - enable_dl_sndfile=$enableval, enable_dl_sndfile=no) -if test "x$tmp_using_sndfile" = "xyes"; then - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_sndfile" = "xyes"; then - AC_DEFINE(DL_LIBSNDFILE, 1, [Define to dlopen() sndfile.]) - dnl When enable_dl_sndfile, do not let SOX_PATH_SNDFILE add libraries - dnl to be linked in (since they will be dlopen()'ed instead). - LIBSNDFILE_LIBS="$ac_sox_save_SNDFILE_LIBS" - else - enable_dl_sndfile="no" - fi -fi -AC_OPTIONAL_FORMAT(sndfile, SNDFILE, [using_sndfile=$tmp_using_sndfile]) - - - -AC_OPTIONAL_FORMAT(oss, OSS, [AC_CHECK_HEADERS(sys/soundcard.h,, using_oss=no)]) - - - -AC_OPTIONAL_FORMAT(sunaudio, SUNAUDIO, [AC_CHECK_HEADERS(sys/audioio.h,, - [AC_CHECK_HEADERS(sun/audioio.h,, using_sunaudio=no)])]) - - - -# MP2/MP3 format depends on libmad || LAME || twolame -AC_OPTIONAL_FORMAT(mp3, MP3, [ - if test "$using_mad" != yes -a "$using_lame" != yes -a "$using_twolame" != yes; then - using_mp3=no - fi]) - - - -# GSM format depends on libgsm -AC_OPTIONAL_FORMAT(gsm, GSM, [using_gsm=$HAVE_LIBGSM]) - - - -# LPC10 format depends on liblpc10 -# No need to check; LPC10 is always found -AC_OPTIONAL_FORMAT(lpc10, LPC10) - - - -dnl Check if we want to disable all symlinks -AC_MSG_CHECKING([whether to enable symlinks]) -AC_ARG_ENABLE(symlinks, - AS_HELP_STRING([--disable-symlinks], [Don't make any symlinks to sox.]),,enable_symlinks=yes) -AC_MSG_RESULT($enable_symlinks) - -if test "$enable_symlinks" = "yes"; then - SYMLINKS=soxi - if test "" \ - -o "$using_alsa" = yes \ - -o "$using_ao" = yes \ - -o "$using_coreaudio" = yes \ - -o "$using_oss" = yes \ - -o "$using_pulseaudio" = yes \ - -o "$using_sndio" = yes \ - -o "$using_sunaudio" = yes \ - -o "$using_waveaudio" = yes \ - ; then - SYMLINKS="$SYMLINKS play rec" - fi -fi -AC_SUBST(SYMLINKS) - -AM_CONDITIONAL(STATIC_LIBSOX_ONLY, test "$enable_shared" = "no" -a "$enable_static" = "yes") +SOX_WITH_LIB([libltdl], [ltdl.h], [ltdl], [lt_dlinit]) + +SOX_WITH([ladspa], [Enable LADSPA plugin support], + [SOX_NEED_DL([${with_ladspa:+dyn}], [--with-ladspa])], + [AC_DEFINE([HAVE_LADSPA_H], [1], [Define if LADSPA support is enabled]) + AS_CASE([$HAVE_LADSPA], [yes], [LADSPA_PATH='${libdir}/ladspa'], + [LADSPA_PATH=$HAVE_LADSPA])], [], [], [*], [$HAVE_LIBLTDL]) +AC_SUBST([LADSPA_PATH]) +SOX_REPORT([other], [LADSPA effect plugins], [$HAVE_LADSPA]) + +dnl Various libraries + +SOX_WITH_LIB([magic], [magic.h], [magic], [magic_open]) +SOX_CHECK_LIB([ZLIB], [zlib.h], [z], [uncompress]) +SOX_WITH_LIB([png], [png.h], [png], [png_set_rows], [], [], [], [$ZLIB_LIBS]) +SOX_WITH_LIB([id3tag], [id3tag.h], [id3tag], [id3_file_open]) +SOX_WITH_LIB([libgsm], [gsm/gsm.h gsm.h], [gsm], [gsm_create]) + +dnl Optional formats + +SOX_ENABLE([formats], [Default setting for optional formats], + [SOX_NEED_DL([$HAVE_FORMATS], [--enable-formats=dyn])], [], [], [], [dyn]) + +SOX_DL_LIB([opencore-amrnb], [opencore-amrnb/interf_dec.h], [opencore-amrnb], + [Decoder_Interface_init]) +SOX_FMT_REQ([amrnb], [OPENCORE_AMRNB]) + +SOX_DL_LIB([opencore-amrwb], [opencore-amrwb/dec_if.h], [opencore-amrwb], + [D_IF_init]) +SOX_DL_LIB([vo-amrwbenc], [vo-amrwbenc/enc_if.h], [vo-amrwbenc], [E_IF_init]) +SOX_FMT_REQ([amrwb], [OPENCORE_AMRWB VO_AMRWBENC]) + +SOX_FMT_PKG([flac], [flac]) +SOX_FMT_REQ([gsm], [LIBGSM]) + +SOX_CHECK_LIB([LIBLPC10], [lpc10.h], [lpc10], [create_lpc10_encoder_state], + [LPC10_LIBS="$LIBLPC10_LIBS"], + [LPC10_LIBS=../lpc10/liblpc10.la; LPC10_CFLAGS='-I${top_srcdir}/lpc10']) +AM_CONDITIONAL([HAVE_LIBLPC10], [test $HAVE_LIBLPC10 = yes]) +SOX_FMT([lpc10]) + +SOX_DL_LIB([mad], [mad.h], [mad], [mad_stream_buffer]) +SOX_DL_LIB([lame], [lame/lame.h lame.h], [mp3lame], [lame_init]) +SOX_DL_LIB([twolame], [twolame.h], [twolame], [twolame_init]) +SOX_FMT_REQ([mp3], [MAD LAME TWOLAME]) +MP3_LIBS="$MP3_LIBS $ID3TAG_LIBS" + +SOX_FMT_PKG([oggvorbis], [ogg vorbis vorbisenc vorbisfile]) +SOX_FMT_PKG([opus], [opusfile]) + +SOX_DL_LIB([libsndfile], [sndfile.h], [sndfile], [sf_open_virtual]) +SOX_FMT_REQ([sndfile], [LIBSNDFILE]) + +SOX_FMT_LIB([wavpack], [wavpack/wavpack.h], [wavpack], [WavpackGetSampleRate]) + +dnl Audio devices + +SOX_FMT_LIB([alsa], [alsa/asoundlib.h], [asound], [snd_pcm_open], [], [], + [devices]) +SOX_FMT_LIB([ao], [ao/ao.h], [ao], [ao_play], [], [], [devices]) +SOX_FMT_LIB([coreaudio], [CoreAudio/CoreAudio.h], [], [AudioDeviceStart], [], + [[-Wl,-framework,CoreAudio]], [devices]) +SOX_FMT_LIB([pulseaudio], [pulse/simple.h], [pulse], [pa_simple_new], [], + [-lpulse-simple], [devices]) +SOX_FMT_HEADERS([oss], [sys/soundcard.h], [SOUND_MIXER_MUTE], [], [devices]) +SOX_FMT_LIB([sndio], [sndio.h], [sndio], [sio_open], [], [], [devices]) +SOX_FMT_HEADERS([sunaudio], [sys/audioio.h sun/audioio.h], + [AUDIO_GETINFO], [], [devices]) +SOX_FMT_LIB([waveaudio], [mmsystem.h], [winmm], [waveOutOpen], [windows.h], [], + [devices]) + +dnl Check if we want to create symlinks +AC_ARG_ENABLE([symlinks], + AS_HELP_STRING([--enable-symlinks], [Create soxi/play/rec links (YES/no)])) +AS_CASE([${enable_symlinks:=yes}], [yes], [ + SYMLINKS=soxi + AS_IF([test -n "$sox_devices"], [SYMLINKS="$SYMLINKS play rec"])]) +AC_SUBST([SYMLINKS]) +SOX_REPORT([build], [symlinks], [${SYMLINKS:-none}]) + +AM_CONDITIONAL(STATIC_LIBSOX_ONLY, test "$enable_shared" = "no") dnl Generate output files. AC_CONFIG_FILES(Makefile src/Makefile lpc10/Makefile sox.pc) AC_OUTPUT -if test "$using_lpc10" != "no"; then - if test "$found_liblpc10" = "yes"; then - lpc10_option="(external)" - else - lpc10_option="(in-tree)" - fi -fi +SOX_REPORT_SECTION([build], [Build options:]) +SOX_REPORT_SECTION([with_libs], [Optional libraries:], [sort]) +SOX_REPORT_SECTION([formats], [Optional formats:], [sort]) +SOX_REPORT_SECTION([devices], [Audio devices:], [sort]) +SOX_REPORT_SECTION([other], [Other options:]) +SOX_REPORT_PRINT -# Report configuration. -echo -echo "BUILD OPTIONS" -echo "Distro name ...............${with_distro:-unspecified}" -echo "Dynamic loading support....$using_libltdl" -echo "Pkg-config location........$pkgconfigdir" -echo "Symlinks enabled...........${SYMLINKS:-no}" -echo -echo "OPTIONAL DEVICE DRIVERS" -echo "ao (Xiph)..................$using_ao" -echo "alsa (Linux)...............$using_alsa" -echo "coreaudio (Mac OS X).......$using_coreaudio" -echo "sndio (OpenBSD)............$using_sndio" -echo "oss........................$using_oss" -echo "pulseaudio.................$using_pulseaudio" -echo "sunaudio...................$using_sunaudio" -echo "waveaudio (MS-Windows).....$using_waveaudio" -echo -echo "OPTIONAL FILE FORMATS" -echo "amrnb......................$using_amrnb" -if test "x$using_amrnb" = "xyes"; then -echo " dlopen amrnb..............${enable_dl_opencore_amrnb:-no}" -fi -echo "amrwb......................$using_amrwb" -if test "x$using_amrwb" = "xyes"; then -echo " dlopen opencore-amrwb.....${enable_dl_opencore_amrwb:-no}" -echo " dlopen vo-amrwbenc........${enable_dl_vo_amrwbenc:-no}" -fi -echo "flac.......................$using_flac" -echo "gsm........................$using_gsm" -echo "lpc10......................$using_lpc10 $lpc10_option" -echo "mp2/mp3....................$using_mp3" -echo " id3tag....................$using_id3tag" -echo " lame......................$using_lame" -if test "x$using_lame" = "xyes"; then -echo " dlopen lame...............$enable_dl_lame" -fi -echo " mad.......................$using_mad" -if test "x$using_mad" = "xyes"; then -echo " dlopen mad................$enable_dl_mad" -fi -echo " twolame...................$using_twolame" -if test "x$using_twolame" = "xyes"; then -echo " dlopen twolame............$enable_dl_twolame" -fi -echo "oggvorbis..................$using_oggvorbis" -echo "opus.......................$using_opus" -echo "sndfile....................$using_sndfile" -if test "x$using_sndfile" = "xyes"; then -echo " dlopen sndfile............$enable_dl_sndfile" -fi -echo "wavpack....................$using_wavpack" -echo -echo "OTHER OPTIONS" -echo "ladspa effects.............$using_ladspa" -echo "magic support..............$using_magic" -echo "png support................$using_png" -if test "x$OPENMP_CFLAGS" = "x"; then -echo "OpenMP support.............no" -else -echo "OpenMP support.............yes, $OPENMP_CFLAGS" -fi echo -echo "Configure finished. Do 'make -s && make install' to compile and install SoX." +echo "Configure finished. Run 'make' to compile SoX." echo diff --git a/m4/optional-fmt.m4 b/m4/optional-fmt.m4 deleted file mode 100644 index d0623c83..00000000 --- a/m4/optional-fmt.m4 +++ /dev/null @@ -1,49 +0,0 @@ -dnl SoX autoconf macro: optional format (c) 2009 ro...@us... -dnl -dnl This program is free software; you can redistribute it and/or modify it -dnl under the terms of the GNU General Public License as published by the -dnl Free Software Foundation; either version 2 of the License, or (at your -dnl option) any later version. -dnl -dnl This program is distributed in the hope that it will be useful, but -dnl WITHOUT ANY WARRANTY; without even the implied warranty of -dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -dnl Public License for more details. -dnl -dnl You should have received a copy of the GNU General Public License along -dnl with this program; if not, write to the Free Software Foundation, Inc., -dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -dnl $1 package name e.g. flac -dnl $2 package name in conditionals e.g. FLAC -dnl $3 using check - -AC_DEFUN([AC_OPTIONAL_FORMAT], - [AC_ARG_WITH($1, AC_HELP_STRING([--with-$1=dyn], [load $1 dynamically])) - using_$1=$with_$1 - if test "_$with_$1" = _dyn; then - if test $using_libltdl != yes; then - AC_MSG_FAILURE([not using libltdl; cannot load $1 dynamically]) - fi - elif test "_$with_$1" = _; then - using_$1=$opt_default - elif test "_$with_$1" != _yes -a "_$with_$1" != _no; then - AC_MSG_FAILURE([invalid selection --with-$1=$with_$1]) - fi - if test _$with_$1 != _no; then - $3 - if test _$with_$1 != _ -a $using_$1 = no; then - AC_MSG_FAILURE([cannot find $1]) - fi - fi - if test "$using_$1" != no; then - AC_DEFINE(HAVE_$2, 1, [Define to 1 if you have $1.]) - if test "$using_$1" = yes; then - AC_DEFINE(STATIC_$2, 1, [Define to 1 if you have static $1.]) - fi - fi - AM_CONDITIONAL(HAVE_$2, test $using_$1 != no) - AM_CONDITIONAL(STATIC_$2, test $using_$1 = yes) - AC_SUBST($2_CFLAGS) - AC_SUBST($2_LIBS)] -) diff --git a/m4/sndfile.m4 b/m4/sndfile.m4 deleted file mode 100644 index 8fc026c9..00000000 --- a/m4/sndfile.m4 +++ /dev/null @@ -1,65 +0,0 @@ -dnl SOX_PATH_SNDFILE -dnl Based off of shout.m4 from xiph package. -dnl cba...@us... 1-3-2007 -dnl -dnl Original Authors: -dnl Jack Moffitt <ja...@ic...> 08-06-2001 -dnl Rewritten for libshout 2 -dnl Brendan Cully <br...@xi...> 20030612 -dnl -# SOX_PATH_SNDFILE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -# Test for libsndfile, and define LIBSNDFILE_CFLAGS and LIBSNDFILE_LIBS -AC_DEFUN([SOX_PATH_SNDFILE], -[dnl -# Step 1: Use pkg-config if available -m4_ifdef([PKG_CHECK_MODULES], - [# PKG_CHECK_MODULES available - PKG_CHECK_MODULES(LIBSNDFILE, sndfile, have_sndfile="maybe", - have_sndfile="no")], - [# Step 2: use pkg-config manually if available - AC_PATH_PROG([PKGCONFIG], [pkg-config], [none]) - if test "$PKGCONFIG" != "none" && `$PKGCONFIG --exists sndfile` - then - LIBSNDFILE_CFLAGS=`$PKGCONFIG --cflags sndfile`" $ac_save_SNDFILE_CFLAGS $LIBSNDFILE_CFLAGS" - LIBSNDFILE_LIBS=`$PKGCONFIG --libs sndfile`" $ac_save_SNDFILE_LIBS $LIBSNDFILE_LIBS" - have_sndfile="maybe" - else - have_sndfile="no" - fi - ]) - -# Step 3: Even if pkg-config says its not installed, user may have -# manually installed libraries with no -kg-config support. -if test "$have_sndfile" = "no" -then - # As a last resort, just hope that header and ilbrary can - # be found in default paths and that it doesn't need - # to link against any other libraries. - LIBSNDFILE_LIBS="-lsndfile $LIBSNDFILE_LIBS" - have_sndfile="maybe" -fi - -# Even if pkg-config or similar told us how to find library, -# do a safety check. -if test "$have_sndfile" != "no" -then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $LIBSNDFILE_CFLAGS" - LIBS="$LIBS $LIBSNDFILE_LIBS" - AC_CHECK_HEADER([sndfile.h], [ - AC_DEFINE([HAVE_SNDFILE_H], 1, [Define if you have <sndfile.h>]) - AC_CHECK_FUNC([sf_open_virtual], [ - ifelse([$1], , :, [$1]) - have_sndfile="yes" - ]) - ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" -fi - -if test "$have_sndfile" != "yes" -then - ifelse([$2], , :, [$2]) -fi -])dnl SOX_PATH_SNDFILE diff --git a/src/Makefile.am b/src/Makefile.am index e0986584..c4cd6c71 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -90,8 +90,8 @@ libsox_la_LDFLAGS = -no-undefined -version-info @SHLIB_VERSION@ \ -export-symbols-regex '^(sox_.*|lsx_(([cm]|re)alloc.*|check_read_params|(close|open)_dllibrary|(debug(_more|_most)?|fail|report|warn)_impl|eof|error|fail_errno|filelength|find_(enum_(text|value)|file_extension)|flush|getopt(_init)?|lpc10_(create_(de|en)coder_state|(de|en)code)|raw(read|write)|read(_b_buf|buf|chars)|rewind|seeki|sigfigs3p?|strcasecmp|strdup|tell|unreadb|write(b|_b_buf|buf|s)))$$' if HAVE_LIBLTDL - libsox_la_CFLAGS += $(LTDLINCL) - libsox_la_LDFLAGS += $(LIBLTDL) + libsox_la_CFLAGS += $(LIBLTDL_CFLAGS) + libsox_la_LIBADD += $(LIBLTDL_LIBS) endif commit 24ee773f822912b646ad607b3c24cf697dc7c669 Author: Mans Rullgard <ma...@ma...> Date: Tue Aug 11 08:22:53 2020 +0100 build: add useful m4 macros diff --git a/m4/sox.m4 b/m4/sox.m4 new file mode 100644 index 00000000..2437d925 --- /dev/null +++ b/m4/sox.m4 @@ -0,0 +1,287 @@ +dnl +dnl SOX_NAME_TAG(NAME-TAG, [BODY]) +dnl +dnl Define using m4_pushdef: +dnl N First word of NAME-TAG +dnl L N sanitised for use as shell variable +dnl T Second word of NAME-TAG, if present, else +dnl L converted to upper case +dnl +dnl If BODY is provided, substitute it and m4_popdef N, L, and T. +dnl Otherwise, leave these macros defined. +dnl +AC_DEFUN([SOX_NAME_TAG], [ + m4_pushdef([nt], m4_split(m4_normalize($1))) + m4_pushdef([N], m4_car(nt)) + m4_pushdef([L], m4_bpatsubst(N, [[^0-9A-Za-z]], [_])) + m4_pushdef([T], m4_default(m4_argn([2], nt), m4_toupper(L))) + m4_popdef([nt]) + m4_ifnblank([$2], [$2 m4_popdef([N], [L], [T])]) +]) + +dnl +dnl SOX_INCLUDE(HEADER) +dnl +dnl Expands to "#include <HEADER>" followed by a newline. +dnl +AC_DEFUN([SOX_INCLUDE], [[#include <]]$1[[> +]]) + +dnl +dnl SOX_CHECK_HEADERS(HEADERS, [DECL], [IF-FOUND], [IF-NOT-FOUND], +dnl [EXTRA-HEADERS]) +dnl +dnl Check for presence of headers. +dnl +dnl HEADERS List of headers to try, stopping when one is found +dnl DECL Optional symbol to check for +dnl IF-FOUND Action to take if one of HEADERS is found +dnl IF-NOT-FOUND Action to take if none of HEADERS are found +dnl EXTRA-HEADERS Additional headers to #include +dnl +dnl Outputs: +dnl HAVE_HEADER: Set with AC_DEFINE to 1 for the first header found +dnl +AC_DEFUN([SOX_CHECK_HEADERS], [ + sox_ch_found=no + AC_CHECK_HEADERS([$1], [sox_ch_found=$ac_header; break], [], + [m4_map([SOX_INCLUDE], m4_split([$5]))]) + AS_CASE([$sox_ch_found], [no], [$4], [m4_ifblank([$2], [$3], + [AC_CHECK_DECL([$2], [$3], [$4], [SOX_INCLUDE([$sox_ch_found])])])]) +]) + +dnl +dnl SOX_CHECK_LIB(TAG, HEADERS, LIB, FUNC, [IF-FOUND], [IF-NOT-FOUND], +dnl [EXTRA-HEADERS], [EXTRA-LIBS]) +dnl +dnl Check for presence of headers and library. +dnl +dnl Arguments: +dnl TAG Prefix/suffix for output variable +dnl HEADERS List of headers searched with SOX_CHECK_HEADERS +dnl LIB Name of library to check +dnl FUNC Name of function in library +dnl IF-FOUND Action to take on success +dnl IF-NOT-FOUND Action to take on failure +dnl EXTRA-HEADERS Passed to SOX_CHECK_HEADERS +dnl EXTRA-LIBS Additional libraries (-lLIB) and linker flags +dnl +dnl Outputs: +dnl HAVE_TAG AC_DEFINE to 1 if found +dnl Set shell variable to 'yes' on success, 'no' otherwise +dnl TAG_LIBS Add '-lLIB EXTRA-LIBS' to start of shell variable +dnl +AC_DEFUN([SOX_CHECK_LIB], [ + m4_pushdef([lib], [m4_default([$3], [c])]) + m4_pushdef([flags], [m4_ifnblank([$3], [-l$3 $8], [$8])]) + HAVE_[]$1=no + SOX_CHECK_HEADERS([$2], [], [AC_CHECK_LIB(lib, [$4], + [HAVE_[]$1=yes], [], [$8 $$1[]_LIBS])], [], [$7]) + AS_CASE([$HAVE_[]$1], [yes], [ + AC_DEFINE([HAVE_]$1, [1], [Define if $4 exists in ]flags) + $1[]_LIBS="flags $$1[]_LIBS" + $5], [$6]) + AC_SUBST($1[_CFLAGS]) + AC_SUBST($1[_LIBS]) + m4_popdef([lib], [flags]) +]) + +dnl +dnl SOX_NEED_DL(VAL, DEP) +dnl +dnl Exit with an error message if VAL equals 'dyn' and dynamic loading +dnl is not available. +dnl +AC_DEFUN([SOX_NEED_DL], [ + AS_CASE([$1-$HAVE_LIBLTDL], [dyn-no], + [AC_MSG_ERROR([dynamic loading not available, needed by $2])]) +]) + +dnl +dnl SOX_ARG(TYPE, NAME, DESC, [TEST], [IF-YES], [IF-NO], [IF-FAIL], +dnl [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_ARG], [SOX_NAME_TAG([$2], [ + m4_pushdef([ATU], m4_toupper($1)) + m4_pushdef([ATL], m4_tolower($1)) + m4_pushdef([optdef], m4_default([$9], [yes])) + m4_pushdef([opts], m4_split([yes no $8])) + m4_pushdef([opts_help], m4_bpatsubst(m4_apply([m4_join], [[/], opts]), + \<optdef\>, m4_toupper(optdef))) + m4_pushdef([opts_sh], m4_apply([m4_join], [[|], opts])) + m4_indir(AC_ARG_[]ATU, [N], AS_HELP_STRING([--ATL-N], [$3 (opts_help)])) + HAVE_[]T=${ATL[]_[]L:-optdef} + AS_CASE([$HAVE_[]T], + [no], [], + [opts_sh], [$4], + [AC_MSG_ERROR([invalid value for --ATL-N])]) + AS_CASE([$ATL[]_[]L-$HAVE_[]T], + [no-*|-no], [$6], + [*-no], [$7], + [$5]) + AM_CONDITIONAL([HAVE_]T, [test $HAVE_[]T != no]) + m4_popdef([ATU], [ATL], [optdef], [opts], [opts_help], [opts_sh]) +])]) + +dnl +dnl SOX_ENABLE(NAME, DESC, [TEST], [IF-YES], [IF-NO], [IF-FAIL], +dnl [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_ENABLE], [ + SOX_ARG([enable], $@) +]) + +dnl +dnl SOX_WITH(NAME, DESC, [TEST], [IF-YES], [IF-NO], [IF-FAIL], +dnl [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_WITH], [ + SOX_ARG([with], $@) +]) + +dnl +dnl SOX_WITH_LIB(NAME, HEADERS, LIB, FUNC, [IF-FOUND], [IF-NOT-FOUND], +dnl [INCLUDES], [EXTRA-LIBS], [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_WITH_LIB], [SOX_NAME_TAG([$1], [ + SOX_WITH([$1], [Use N], + [AS_CASE([$HAVE_[]T], [yes|dyn], [sox_wl=$3], [sox_wl=$HAVE_[]T]) + SOX_CHECK_LIB([T], [$2], [$sox_wl], [$4], [], [], [$7], [$8])], + [$5], [$6], [AC_MSG_FAILURE([N not found])], + [$9 *], m4_argn([8], m4_shift2($@))) dnl BSD m4 can't count to 10 + SOX_REPORT([with_libs], [N], [$HAVE_]T) +])]) + +dnl +dnl SOX_DL_LIB(NAME, HEADERS, LIB, FUNC, [IF-STATIC], [IF-DL], [IF-NOT-FOUND], +dnl [EXTRA-HEADERS], [EXTRA-LIBS]) +dnl +AC_DEFUN([SOX_DL_LIB], [SOX_NAME_TAG([$1], [ + SOX_NEED_DL([$with_[]L], [--with-L=dyn]) + SOX_WITH_LIB([$1], [$2], [$3], [$4], [], [$7], [$8], [$9], [dyn]) + AS_CASE([$with_[]L-$HAVE_[]T], + [dyn-*], [AC_DEFINE([DL_]T, 1, [Define to dlopen() ]N) + HAVE_[]T=dyn; $6], + [*-yes], [$5]) +])]) + +dnl +dnl SOX_REQUIRE1(FEATURE, TAG, [IF-FOUND]) +dnl +AC_DEFUN([SOX_REQUIRE1], [ + AS_CASE([$HAVE_$1], + [yes|dyn], [$2_CFLAGS="$$2_CFLAGS $$1_CFLAGS"; $3]) + AS_CASE([$HAVE_$1], + [yes], [$2_LIBS="$$2_LIBS $$1_LIBS"]) +]) + +dnl +dnl SOX_REQUIRE(FEATURES, TAG, [IF-NOT-FOUND]) +dnl +AC_DEFUN([SOX_REQUIRE], [ + sox_req_found=no + m4_map_args_w([$1], [SOX_REQUIRE1(], [, $2, [sox_req_found=yes])]) + AS_CASE([$sox_req_found], [yes], [], [$3]) +]) + +dnl +dnl SOX_FMT(NAME, [TEST], [SECTION]) +dnl +dnl Add an optional format with corresponding --enable flag. +dnl +dnl Arguments: +dnl NAME Name of format, passed to SOX_NAME_TAG setting N and T +dnl TEST Test for prerequisites, must set HAVE_T to 'no' if not met +dnl SECTION Section format belongs to, default 'formats' +dnl +dnl Outputs: +dnl HAVE_T Set shell variable to 'yes', 'no', or 'dyn' +dnl AC_DEFINE and AM_CONDITIONAL true if not 'no' +dnl STATIC_T AC_DEFINE and AM_CONDITIONAL true if HAVE_T = 'yes' +dnl +AC_DEFUN([SOX_FMT], [SOX_NAME_TAG([$1], [ + m4_pushdef([section], m4_default([$3], [formats])) + SOX_NEED_DL([$with_[]L], [--enable-L=dyn]) + SOX_ENABLE([$1], [Enable N], [$2], + [AC_DEFINE([HAVE_]T, [1], [Define if ]N[ is enabled]) + sox_[]section="$sox_[]section L"], [], + [AC_MSG_FAILURE([N not available])], + [dyn], [${HAVE_FORMATS:-yes}]) + AS_CASE([$HAVE_[]T], + [yes], [AC_DEFINE([STATIC_]T, [1], [Define if ]N[ is linked in])]) + AC_SUBST(T[_CFLAGS]) + AC_SUBST(T[_LIBS]) + AM_CONDITIONAL([STATIC_]T, [test $HAVE_[]T = yes]) + SOX_REPORT(section, [N], [$HAVE_]T) + m4_popdef([section]) +])]) + +dnl +dnl SOX_FMT_REQ(NAME, FEATURES, [SECTION]) +dnl +AC_DEFUN([SOX_FMT_REQ], [ + SOX_FMT([$1], [SOX_REQUIRE([$2], [T], [HAVE_[]T=no])], [$3]) +]) + +dnl +dnl SOX_FMT_HEADERS(NAME, HEADERS, [DECL], [EXTRA-HEADERS], [SECTION]) +dnl +dnl Wrapper for SOX_FMT with SOX_CHECK_HEADERS as test. +dnl +AC_DEFUN([SOX_FMT_HEADERS], [ + SOX_FMT([$1], + [SOX_CHECK_HEADERS([$2], [$3], [], [HAVE_[]T=no], [$4])], [$5]) +]) + +dnl +dnl SOX_FMT_LIB(NAME, HEADERS, LIB, FUNC, [EXTRA-HEADERS], [EXTRA-LIBS], +dnl [SECTION]) +dnl +dnl Wrapper for SOX_FMT with SOX_CHECK_LIB as test. +dnl +AC_DEFUN([SOX_FMT_LIB], [ + SOX_FMT([$1], [ + SOX_CHECK_LIB([LIB[]T], [$2], [$3], [$4], [], [HAVE_[]T=no], [$5], [$6]) + T[]_CFLAGS=$LIB[]T[]_CFLAGS + T[]_LIBS=$LIB[]T[]_LIBS], [$7]) +]) + +dnl +dnl SOX_FMT_PKG(NAME, PKG) +dnl +AC_DEFUN([SOX_FMT_PKG], [ + SOX_FMT([$1], [PKG_CHECK_MODULES(T, [$2], [], [HAVE_[]T=no])]) +]) + +dnl +dnl SOX_REPORT_SECTION(NAME, TITLE, [FILTER]) +dnl +AC_DEFUN([SOX_REPORT_SECTION], [ + m4_append([sox_rep_sections], [$1], [ ]) + m4_define([sox_rep_title_$1], [$2]) + m4_define([sox_rep_filter_$1], m4_default([$3], [cat])) +]) + +dnl +dnl SOX_REPORT(SECTION, DESC, VAL) +dnl +AC_DEFUN([SOX_REPORT], [ + m4_append([sox_rep_text_$1], AS_HELP_STRING([$2], [$3]), m4_newline) +]) + +dnl +dnl SOX_REPORT_PRINT1(SECTION) +dnl +AC_DEFUN([SOX_REPORT_PRINT1], [ + echo; echo "sox_rep_title_$1" + sox_rep_filter_$1 <<EOF +sox_rep_text_$1 +EOF +]) + +dnl +dnl SOX_REPORT_PRINT +dnl +AC_DEFUN([SOX_REPORT_PRINT], [ + m4_map([SOX_REPORT_PRINT1], m4_split(sox_rep_sections)) +]) commit 3d55a193330e1da375d33d394275e56602e67d7e Author: Mans Rullgard <ma...@ma...> Date: Wed Aug 19 11:48:32 2020 +0100 build: simplify win32 glob selection Move the files to a subdirectory so the header can be activated by simply adding a -I flag, avoiding ugly ifdefs. Use this version if a native glob is missing and FindFirstFileA() exists. This is more accurate than matching the system name since some mingw versions do have a glob implementation. diff --git a/configure.ac b/configure.ac index 5d5a9866..b9822490 100644 --- a/configure.ac +++ b/configure.ac @@ -13,10 +13,7 @@ AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR(sox.1) AC_CONFIG_HEADERS([src/soxconfig.h]) -dnl Find target architecture -AC_CANONICAL_TARGET - -AM_INIT_AUTOMAKE +AM_INIT_AUTOMAKE([subdir-objects]) AM_SILENT_RULES([yes]) LT_INIT([win32-dll]) @@ -62,16 +59,12 @@ dnl Check for OpenMP AC_OPENMP CFLAGS="$CFLAGS $OPENMP_CFLAGS" -using_win32_glob="no" -case $target in - *mingw*) - using_win32_glob="yes" - ;; -esac -if test "$using_win32_glob" = yes; then - AC_DEFINE([HAVE_WIN32_GLOB_H], 1, [Define to 1 to use win32 glob]) +if test "$ac_cv_header_glob_h" != yes; then + AC_CHECK_FUNC([FindFirstFileA], [ + AC_DEFINE([HAVE_GLOB_H], [1], [Define if glob.h exists]) + HAVE_WIN32_GLOB=yes]) fi -AM_CONDITIONAL(HAVE_WIN32_GLOB, test x$using_win32_glob = xyes) +AM_CONDITIONAL(HAVE_WIN32_GLOB, test "$HAVE_WIN32_GLOB" = yes) AC_ARG_WITH(dyn-default,AS_HELP_STRING([--with-dyn-default],[Default to loading optional formats dynamically]),opt_default=dyn,opt_default=yes) diff --git a/src/Makefile.am b/src/Makefile.am index b63780e6..e0986584 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -27,7 +27,8 @@ lib_LTLIBRARIES = libsox.la include_HEADERS = sox.h sox_SOURCES = sox.c if HAVE_WIN32_GLOB -sox_SOURCES += win32-glob.c win32-glob.h +sox_SOURCES += win32/glob.c win32/glob.h +AM_CPPFLAGS += -I$(srcdir)/win32 endif sox_LDADD = libsox.la example0_SOURCES = example0.c diff --git a/src/sox.c b/src/sox.c index 9431876c..9e59a60d 100644 --- a/src/sox.c +++ b/src/sox.c @@ -37,10 +37,7 @@ #include <sys/types.h> #include <time.h> -#if defined(HAVE_WIN32_GLOB_H) - #include "win32-glob.h" - #define HAVE_GLOB_H 1 -#elif defined(HAVE_GLOB_H) +#if defined(HAVE_GLOB_H) #include <glob.h> #endif diff --git a/src/win32-glob.c b/src/win32/glob.c similarity index 99% rename from src/win32-glob.c rename to src/win32/glob.c index 58d72231..d1cf3755 100644 --- a/src/win32-glob.c +++ b/src/win32/glob.c @@ -15,7 +15,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "win32-glob.h" +#include "glob.h" #include <stdlib.h> #include <stdio.h> #include <errno.h> diff --git a/src/win32-glob.h b/src/win32/glob.h similarity index 100% rename from src/win32-glob.h rename to src/win32/glob.h commit cb3ed3c66705de48de46142afff3d58053754267 Author: Mans Rullgard <ma...@ma...> Date: Sat Aug 15 23:21:07 2020 +0100 configure: reorder things more logically Place autofoo setup first, followed by general tests for programs and flags. Checks for libraries and SoX features come last. diff --git a/configure.ac b/configure.ac index 7e5c959b..5d5a9866 100644 --- a/configure.ac +++ b/configure.ac @@ -5,7 +5,13 @@ LT_PREREQ(2.4) AC_INIT(SoX, 14.4.3git, sox...@li...) +dnl Increase version when binary compatibility with previous version is broken +SHLIB_VERSION=3:0:0 +AC_SUBST(SHLIB_VERSION) + AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_SRCDIR(sox.1) +AC_CONFIG_HEADERS([src/soxconfig.h]) dnl Find target architecture AC_CANONICAL_TARGET @@ -13,11 +19,11 @@ AC_CANONICAL_TARGET AM_INIT_AUTOMAKE AM_SILENT_RULES([yes]) -dnl create a config.h file (Automake will add -DHAVE_CONFIG_H) -AC_CONFIG_HEADERS([src/soxconfig.h]) +LT_INIT([win32-dll]) -dnl Check we have the right srcdir -AC_CONFIG_SRCDIR(sox.1) +AC_ARG_WITH(distro, + AS_HELP_STRING([--with-distro=name], [Provide distribution name]), + AC_DEFINE_UNQUOTED(DISTRO, ["$with_distro"], [Distribution name])) dnl Checks for programs. AC_PROG_CC @@ -25,53 +31,12 @@ AM_PROG_CC_C_O AC_PROG_INSTALL AC_PROG_LN_S -AX_APPEND_LINK_FLAGS([-Wl,--as-needed]) - -dnl Increase version when binary compatibility with previous version is broken -SHLIB_VERSION=3:0:0 -AC_SUBST(SHLIB_VERSION) - -AC_ARG_WITH(libltdl, - AS_HELP_STRING([--without-libltdl], - [Don't try to use libltdl for external dynamic library support]), - with_libltdl=$withval, with_libltdl=default) - -if test "$with_libltdl" = "default"; then - dnl Default to no libltdl support when building only static libraries - if test "$enable_shared" != "no"; then - using_libltdl=yes - else - using_libltdl=no - fi - with_libltdl="yes" -else - using_libltdl=$with_libltdl -fi - -LT_INIT([win32-dll]) - -AC_ARG_WITH(dyn-default,AS_HELP_STRING([--with-dyn-default],[Default to loading optional formats dynamically]),opt_default=dyn,opt_default=yes) - PKG_PROG_PKG_CONFIG PKG_INSTALLDIR -using_win32_glob="no" -case $target in - *mingw*) - using_win32_glob="yes" - ;; -esac -if test "$using_win32_glob" = yes; then - AC_DEFINE([HAVE_WIN32_GLOB_H], 1, [Define to 1 to use win32 glob]) -fi -AM_CONDITIONAL(HAVE_WIN32_GLOB, test x$using_win32_glob = xyes) - AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong]) AX_APPEND_COMPILE_FLAGS([-Wall -Wmissing-prototypes -Wstrict-prototypes]) - -AC_ARG_WITH(distro, - AS_HELP_STRING([--with-distro=name], [Provide distribution name]), - AC_DEFINE_UNQUOTED(DISTRO, ["$with_distro"], [Distribution name])) +AX_APPEND_LINK_FLAGS([-Wl,--as-needed]) dnl Check for system dependent features. AC_C_BIGENDIAN @@ -93,6 +58,40 @@ dnl Large File Support AC_SYS_LARGEFILE AC_FUNC_FSEEKO +dnl Check for OpenMP +AC_OPENMP +CFLAGS="$CFLAGS $OPENMP_CFLAGS" + +using_win32_glob="no" +case $target in + *mingw*) + using_win32_glob="yes" + ;; +esac +if test "$using_win32_glob" = yes; then + AC_DEFINE([HAVE_WIN32_GLOB_H], 1, [Define to 1 to use win32 glob]) +fi +AM_CONDITIONAL(HAVE_WIN32_GLOB, test x$using_win32_glob = xyes) + +AC_ARG_WITH(dyn-default,AS_HELP_STRING([--with-dyn-default],[Default to loading optional formats dynamically]),opt_default=dyn,opt_default=yes) + +AC_ARG_WITH(libltdl, + AS_HELP_STRING([--without-libltdl], + [Don't try to use libltdl for external dynamic library support]), + with_libltdl=$withval, with_libltdl=default) + +if test "$with_libltdl" = "default"; then + dnl Default to no libltdl support when building only static libraries + if test "$enable_shared" != "no"; then + using_libltdl=yes + else + using_libltdl=no + fi + with_libltdl="yes" +else + using_libltdl=$with_libltdl +fi + dnl Check if ltdl should be enabled. if test "$using_libltdl" != "no"; then AC_CHECK_HEADERS(ltdl.h, @@ -106,11 +105,6 @@ AM_CONDITIONAL(HAVE_LIBLTDL, test x$using_libltdl = xyes) AC_SUBST(LIBLTDL) -dnl Check for OpenMP -AC_OPENMP -CFLAGS="$CFLAGS $OPENMP_CFLAGS" - - dnl Check for magic library AC_ARG_W... [truncated message content] |
From: Mans R. <ma...@us...> - 2020-09-05 15:19:20
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, master has been updated via 07de8a77a862e6800b95a8d3a61c6b4e41362755 (commit) via fef031d187e72f25688ff9f1260a5571afe035b9 (commit) via b0460afbdbde30abfaeb11e5fc50e3ff862b8839 (commit) via 9abe8822ba60526b4f02fb0fbf4634f4eb9bf51d (commit) via cf7ad263712747461a49a8758f26a064a7042980 (commit) via 0d44e15d428b6385b778da578333a095a808b463 (commit) from 784021f41f97a65471d961d39474c85ba00318de (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 07de8a77a862e6800b95a8d3a61c6b4e41362755 Author: Mans Rullgard <ma...@ma...> Date: Wed Aug 26 13:14:44 2020 +0100 sox: remove interactive volume control The interactive volume control feature is broken (SIGSEGV) with sunaudio output, and with OSS there is nothing to ensure it is operating on the correct device. Remove the feature and let the rare systems using these drivers cope without it just like all the others. Fixes build on NetBSD. diff --git a/sox.1 b/sox.1 index 4cdab5a5..8aa2b371 100644 --- a/sox.1 +++ b/sox.1 @@ -325,12 +325,6 @@ c8 c8 c. .TE .DT .SP -On some systems, SoX allows audio playback volume to be adjusted whilst -using -.BR play . -Where supported, this is achieved by tapping the `v' & `V' keys during -playback. -.SP To help with setting a suitable recording level, SoX includes a peak-level meter which can be invoked (before making the actual recording) as follows: .EX diff --git a/src/sox.c b/src/sox.c index 43e3d707..9431876c 100644 --- a/src/sox.c +++ b/src/sox.c @@ -48,26 +48,6 @@ #include <io.h> #endif -#ifdef HAVE_SUN_AUDIOIO_H - #include <sun/audioio.h> - #define HAVE_AUDIOIO_H 1 -#else -#ifdef HAVE_SYS_AUDIOIO_H - #include <sys/audioio.h> - #define HAVE_AUDIOIO_H 1 -#endif -#endif - -#ifdef HAVE_SYS_SOUNDCARD_H - #include <sys/soundcard.h> - #define HAVE_SOUNDCARD_H 1 -#else -#ifdef HAVE_MACHINE_SOUNDCARD_H - #include <machine/soundcard.h> - #define HAVE_SOUNDCARD_H 1 -#endif -#endif - #ifdef HAVE_SYS_TIME_H #include <sys/time.h> #endif @@ -1308,63 +1288,15 @@ static int kbhit(void) #define kbhit() 0 #endif -#ifdef HAVE_SOUNDCARD_H -#include <sys/ioctl.h> -static void adjust_volume(int delta) -{ - char * from_env = getenv("MIXERDEV"); - int vol1 = 0, vol2 = 0, fd = open(from_env? from_env : "/dev/mixer", O_RDWR); - if (fd >= 0) { - if (ioctl(fd, MIXER_READ(SOUND_MIXER_PCM), &vol1) != -1) { - int side1 = vol1 & 0xff, side2 = (vol1 >> 8) & 0xff; - delta = delta < 0? max(delta, -min(side1, side2)) : - min(delta, 100 - max(side1, side2)); - vol2 = ((side2 + delta) << 8) + side1 + delta; - lsx_debug("%04x %04x", vol1, vol2); - if (vol1 != vol2 && ioctl(fd, MIXER_WRITE(SOUND_MIXER_PCM), &vol2) < 0) - vol2 = vol1; - } - close(fd); - } - if (vol1 == vol2) - putc('\a', stderr); -} -#elif defined(HAVE_AUDIOIO_H) -static void adjust_volume(int delta) -{ - int vol1 = 0, vol2 = 0, fd = fileno((FILE*)ofile->ft->fp); - if (fd >= 0) { - audio_info_t audio_info; - if (ioctl(fd, AUDIO_GETINFO, &audio_info) >= 0) { - vol1 = (audio_info.play.gain * 100 + (AUDIO_MAX_GAIN >> 1)) / AUDIO_MAX_GAIN; - vol2 = range_limit(vol1 + delta, 0, 100); - AUDIO_INITINFO(&audio_info); - audio_info.play.gain = (vol2 * AUDIO_MAX_GAIN + 50) / 100; - audio_info.output_muted = 0; - lsx_debug("%04x %04x", vol1, vol2); - if (vol1 != vol2 && ioctl(fd, AUDIO_SETINFO, &audio_info) < 0) - vol2 = vol1; - } - } - if (vol1 == vol2) - putc('\a', stderr); -} -#else -static void adjust_volume(int delta) -{ - (void)delta; - putc('\a', stderr); -} -#endif - static int update_status(sox_bool all_done, void * client_data) { (void)client_data; if (interactive) while (kbhit()) { + int LSX_UNUSED ch; #ifdef HAVE_CONIO_H - int ch = _getch(); + ch = _getch(); #else - int ch = getchar(); + ch = getchar(); #endif #ifdef MORE_INTERACTIVE @@ -1404,10 +1336,6 @@ static int update_status(sox_bool all_done, void * client_data) user_restart_eff = sox_true; } #endif - switch (ch) { - case 'V': adjust_volume(+7); break; - case 'v': adjust_volume(-7); break; - } } display_status(all_done || user_abort); commit fef031d187e72f25688ff9f1260a5571afe035b9 Author: Mans Rullgard <ma...@ma...> Date: Fri Aug 14 14:04:41 2020 +0100 mp3: remove check for lame id3 tag support LAME has had ID3 tag support for long enough that it can be assumed present. diff --git a/configure.ac b/configure.ac index bd81f38d..6ee40011 100644 --- a/configure.ac +++ b/configure.ac @@ -367,10 +367,6 @@ if test "$with_lame" != "no"; then AC_CHECK_HEADERS(lame/lame.h,, [AC_CHECK_HEADERS(lame.h, [], using_lame=no)]) AC_CHECK_LIB(mp3lame, lame_get_lametag_frame, MP3_LIBS="$MP3_LIBS -lmp3lame", using_lame=no) - AC_CHECK_LIB(mp3lame, id3tag_set_fieldvalue, using_lame=$using_lame) - if test "$ac_cv_lib_mp3lame_id3tag_set_fieldvalue" = yes; then - AC_DEFINE(HAVE_LAME_ID3TAG, 1, [Define to 1 if lame supports optional ID3 tags.]) - fi if test "$with_lame" = "yes" -a "$using_lame" = "no"; then AC_MSG_FAILURE([cannot find LAME]) fi @@ -654,9 +650,6 @@ echo "mp2/mp3....................$using_mp3" echo " id3tag....................$using_id3tag" echo " lame......................$using_lame" if test "x$using_lame" = "xyes"; then -if test "x$enable_dl_lame" != "xyes"; then -echo " lame id3tag...............$ac_cv_lib_mp3lame_id3tag_set_fieldvalue" -fi echo " dlopen lame...............$enable_dl_lame" fi echo " mad.......................$using_mad" diff --git a/src/mp3.c b/src/mp3.c index f292a52a..33a371ed 100644 --- a/src/mp3.c +++ b/src/mp3.c @@ -127,25 +127,9 @@ static const char* const lame_library_names[] = }; #ifdef DL_LAME - - /* Expected to be present in all builds of LAME. */ #define LAME_FUNC LSX_DLENTRY_DYNAMIC - - /* id3tag support is an optional component of LAME. Use if available. */ - #define LAME_FUNC_ID3 LSX_DLENTRY_STUB - #else /* DL_LAME */ - - /* Expected to be present in all builds of LAME. */ #define LAME_FUNC LSX_DLENTRY_STATIC - - /* id3tag support is an optional component of LAME. Use if available. */ - #ifdef HAVE_LAME_ID3TAG - #define LAME_FUNC_ID3 LSX_DLENTRY_STATIC - #else - #define LAME_FUNC_ID3 LSX_DLENTRY_STUB - #endif - #endif /* DL_LAME */ #define LAME_FUNC_ENTRIES(f,x) \ @@ -169,17 +153,17 @@ static const char* const lame_library_names[] = LAME_FUNC(f,x, int, lame_encode_flush, (lame_global_flags *, unsigned char *, int)) \ LAME_FUNC(f,x, int, lame_close, (lame_global_flags *)) \ LAME_FUNC(f,x, size_t, lame_get_lametag_frame, (const lame_global_flags *, unsigned char*, size_t)) \ - LAME_FUNC_ID3(f,x, void, id3tag_init, (lame_global_flags *)) \ - LAME_FUNC_ID3(f,x, void, id3tag_set_title, (lame_global_flags *, const char* title)) \ - LAME_FUNC_ID3(f,x, void, id3tag_set_artist, (lame_global_flags *, const char* artist)) \ - LAME_FUNC_ID3(f,x, void, id3tag_set_album, (lame_global_flags *, const char* album)) \ - LAME_FUNC_ID3(f,x, void, id3tag_set_year, (lame_global_flags *, const char* year)) \ - LAME_FUNC_ID3(f,x, void, id3tag_set_comment, (lame_global_flags *, const char* comment)) \ - LAME_FUNC_ID3(f,x, int, id3tag_set_track, (lame_global_flags *, const char* track)) \ - LAME_FUNC_ID3(f,x, int, id3tag_set_genre, (lame_global_flags *, const char* genre)) \ - LAME_FUNC_ID3(f,x, size_t, id3tag_set_pad, (lame_global_flags *, size_t)) \ - LAME_FUNC_ID3(f,x, size_t, lame_get_id3v2_tag, (lame_global_flags *, unsigned char*, size_t)) \ - LAME_FUNC_ID3(f,x, int, id3tag_set_fieldvalue, (lame_global_flags *, const char *)) + LAME_FUNC(f,x, void, id3tag_init, (lame_global_flags *)) \ + LAME_FUNC(f,x, void, id3tag_set_title, (lame_global_flags *, const char* title)) \ + LAME_FUNC(f,x, void, id3tag_set_artist, (lame_global_flags *, const char* artist)) \ + LAME_FUNC(f,x, void, id3tag_set_album, (lame_global_flags *, const char* album)) \ + LAME_FUNC(f,x, void, id3tag_set_year, (lame_global_flags *, const char* year)) \ + LAME_FUNC(f,x, void, id3tag_set_comment, (lame_global_flags *, const char* comment)) \ + LAME_FUNC(f,x, int, id3tag_set_track, (lame_global_flags *, const char* track)) \ + LAME_FUNC(f,x, int, id3tag_set_genre, (lame_global_flags *, const char* genre)) \ + LAME_FUNC(f,x, size_t, id3tag_set_pad, (lame_global_flags *, size_t)) \ + LAME_FUNC(f,x, size_t, lame_get_id3v2_tag, (lame_global_flags *, unsigned char*, size_t)) \ + LAME_FUNC(f,x, int, id3tag_set_fieldvalue, (lame_global_flags *, const char *)) #ifdef HAVE_TWOLAME static const char* const twolame_library_names[] = commit b0460afbdbde30abfaeb11e5fc50e3ff862b8839 Author: Mans Rullgard <ma...@ma...> Date: Fri Aug 14 12:35:17 2020 +0100 amr: make dlopen options per library diff --git a/configure.ac b/configure.ac index 42ab2a6c..bd81f38d 100644 --- a/configure.ac +++ b/configure.ac @@ -445,29 +445,32 @@ AC_OPTIONAL_FORMAT(flac, FLAC, [PKG_CHECK_MODULES([FLAC], [flac], [], [using_flac=no])]) -dnl When enable_dl_amrbw, do not let add libraries to be linked in -dnl since they will be dlopen()'ed instead. -ac_sox_save_AMRWB_LIBS="$AMRWB_LIBS" tmp_using_amrwb=no AC_CHECK_HEADERS(opencore-amrwb/dec_if.h, [AC_CHECK_LIB(opencore-amrwb, D_IF_init, - [AMRWB_LIBS="$AMRWB_LIBS -lopencore-amrwb"; tmp_using_amrwb=$opt_default])]) + [OPENCORE_AMRWB_LIBS="$OPENCORE_AMRWB_LIBS -lopencore-amrwb"; tmp_using_amrwb=$opt_default])]) AC_CHECK_HEADERS(vo-amrwbenc/enc_if.h, [AC_CHECK_LIB(vo-amrwbenc, E_IF_init, - AMRWB_LIBS="$AMRWB_LIBS -lvo-amrwbenc"; tmp_using_amrwb=$opt_default)]) -AC_ARG_ENABLE(dl_amrwb, - AS_HELP_STRING([--enable-dl-amrwb], - [Dlopen amrbw instead of linking in.]), - enable_dl_amrwb=$enableval, enable_dl_amrwb=no) -if test "x$using_libltdl" = "xyes" -a "x$enable_dl_amrwb" = "xyes"; then - AC_DEFINE(DL_AMRWB, 1, [Define to dlopen() amrwb.]) - dnl When enable_dl_amrwb, do not let SOX_PATH_AMRWB add libraries - dnl to be linked in (since they will be dlopen()'ed instead). - AMRWB_LIBS="$ac_sox_save_AMRWB_LIBS" - dnl Force to using regardless if headers or libraries were found. - tmp_using_amrwb=yes + [VO_AMRWBENC_LIBS="$VO_AMRWBENC_LIBS -lvo-amrwbenc"; tmp_using_amrwb=$opt_default])]) +AC_ARG_ENABLE(dl_opencore_amrwb, + AS_HELP_STRING([--enable-dl-opencore-amrwb], + [Dlopen opencore-amrbw instead of linking in.])) +AC_ARG_ENABLE(dl_vo_amrwbenc, + AS_HELP_STRING([--enable-dl-vo-amrwbenc], + [Dlopen vo-amrbwenc instead of linking in.])) +if test "$using_libltdl" != "yes"; then + enable_dl_opencore_amrwb=no + enable_dl_vo_amrwbenc=no +fi +if test "$enable_dl_opencore_amrwb" = "yes"; then + AC_DEFINE(DL_OPENCORE_AMRWB, 1, [Define to dlopen() opencore-amrwb.]) +else + AMRWB_LIBS="$AMRWB_LIBS $OPENCORE_AMRWB_LIBS" +fi +if test "$enable_dl_vo_amrwbenc" = "yes"; then + AC_DEFINE(DL_VO_AMRWBENC, 1, [Define to dlopen() vo-amrwbenc.]) else - enable_dl_amrwb="no" + AMRWB_LIBS="$AMRWB_LIBS $VO_AMRWBENC_LIBS" fi AC_OPTIONAL_FORMAT(amrwb, AMRWB, [using_amrwb=$tmp_using_amrwb]) @@ -479,19 +482,18 @@ AC_CHECK_HEADERS(opencore-amrnb/interf_dec.h, [AC_CHECK_LIB(opencore-amrnb, Decoder_Interface_init, AMRNB_LIBS="$AMRNB_LIBS -lopencore-amrnb", tmp_using_amrnb=no)], [tmp_using_amrnb=no]) -AC_ARG_ENABLE(dl_amrnb, - AS_HELP_STRING([--enable-dl-amrnb], - [Dlopen amrnb instead of linking in.]), - enable_dl_amrnb=$enableval, enable_dl_amrnb=no) -if test "x$using_libltdl" = "xyes" -a "x$enable_dl_amrnb" = "xyes"; then - AC_DEFINE(DL_AMRNB, 1, [Define to dlopen() amrnb.]) +AC_ARG_ENABLE(dl_opencore_amrnb, + AS_HELP_STRING([--enable-dl-opencore-amrnb], + [Dlopen opencore-amrnb instead of linking in.])) +if test "$using_libltdl" = "yes" -a "$enable_dl_opencore_amrnb" = "yes"; then + AC_DEFINE(DL_OPENCORE_AMRNB, 1, [Define to dlopen() opencore-amrnb.]) dnl When enable_dl_amrnb, do not let SOX_PATH_AMRNB add libraries dnl to be linked in (since they will be dlopen()'ed instead). AMRNB_LIBS="$ac_sox_save_AMRNB_LIBS" dnl Force to using regardless if headers or libraries were found. tmp_using_amrnb=yes else - enable_dl_amrnb="no" + enable_dl_opencore_amrnb="no" fi AC_OPTIONAL_FORMAT(amrnb, AMRNB, [using_amrnb=$tmp_using_amrnb]) @@ -638,11 +640,12 @@ echo echo "OPTIONAL FILE FORMATS" echo "amrnb......................$using_amrnb" if test "x$using_amrnb" = "xyes"; then -echo " dlopen amrnb..............$enable_dl_amrnb" +echo " dlopen amrnb..............${enable_dl_opencore_amrnb:-no}" fi echo "amrwb......................$using_amrwb" if test "x$using_amrwb" = "xyes"; then -echo " dlopen amrwb..............$enable_dl_amrwb" +echo " dlopen opencore-amrwb.....${enable_dl_opencore_amrwb:-no}" +echo " dlopen vo-amrwbenc........${enable_dl_vo_amrwbenc:-no}" fi echo "flac.......................$using_flac" echo "gsm........................$using_gsm" diff --git a/src/amr-nb.c b/src/amr-nb.c index c68ad2bd..b4181ce1 100644 --- a/src/amr-nb.c +++ b/src/amr-nb.c @@ -45,7 +45,7 @@ static char const amrnb_magic[] = "#!AMR\n"; #define AMR_RATE 8000 #define AMR_DESC "3GPP Adaptive Multi Rate Narrow-Band (AMR-NB) lossy speech compressor" -#ifdef DL_AMRNB +#ifdef DL_OPENCORE_AMRNB #define AMR_FUNC LSX_DLENTRY_DYNAMIC #else #define AMR_FUNC LSX_DLENTRY_STATIC @@ -80,7 +80,7 @@ static char const amrnb_magic[] = "#!AMR\n"; #define AMR_OPENCORE_DESC "amr-nb OpenCore library" static const char* const amr_opencore_library_names[] = { -#ifdef DL_AMRWB +#ifdef DL_OPENCORE_AMRNB "libopencore-amrnb", "libopencore-amrnb-0", #endif diff --git a/src/amr-wb.c b/src/amr-wb.c index 7b5a66d8..7824f672 100644 --- a/src/amr-wb.c +++ b/src/amr-wb.c @@ -43,23 +43,23 @@ static char const amrwb_magic[] = "#!AMR-WB\n"; #define AMR_RATE 16000 #define AMR_DESC "3GPP Adaptive Multi Rate Wide-Band (AMR-WB) lossy speech compressor" -#ifdef DL_AMRWB - #define AMR_FUNC LSX_DLENTRY_DYNAMIC -#else - #define AMR_FUNC LSX_DLENTRY_STATIC -#endif /* DL_AMRWB */ - /* OpenCore definitions: */ -#if defined(HAVE_OPENCORE_AMRWB_DEC_IF_H) || defined(DL_AMRWB) +#ifdef DL_OPENCORE_AMRWB + #define AMR_OC_FUNC LSX_DLENTRY_DYNAMIC +#else + #define AMR_OC_FUNC LSX_DLENTRY_STATIC +#endif + +#if defined(HAVE_OPENCORE_AMRWB_DEC_IF_H) || defined(DL_OPENCORE_AMRWB) #define AMR_OPENCORE 1 #define AMR_OPENCORE_ENABLE_ENCODE 0 #endif #define AMR_OPENCORE_FUNC_ENTRIES(f,x) \ - AMR_FUNC(f,x, void*, D_IF_init, (void)) \ - AMR_FUNC(f,x, void, D_IF_decode, (void* state, const unsigned char* in, short* out, int bfi)) \ - AMR_FUNC(f,x, void, D_IF_exit, (void* state)) \ + AMR_OC_FUNC(f,x, void*, D_IF_init, (void)) \ + AMR_OC_FUNC(f,x, void, D_IF_decode, (void* state, const unsigned char* in, short* out, int bfi)) \ + AMR_OC_FUNC(f,x, void, D_IF_exit, (void* state)) \ #define AmrDecoderInit() \ D_IF_init() @@ -71,7 +71,7 @@ static char const amrwb_magic[] = "#!AMR-WB\n"; #define AMR_OPENCORE_DESC "amr-wb OpenCore library" static const char* const amr_opencore_library_names[] = { -#ifdef DL_AMRWB +#ifdef DL_OPENCORE_AMRWB "libopencore-amrwb", "libopencore-amrwb-0", #endif @@ -80,14 +80,20 @@ static const char* const amr_opencore_library_names[] = /* VO definitions: */ -#if defined(HAVE_VO_AMRWBENC_ENC_IF_H) || defined(DL_AMRWB) +#ifdef DL_VO_AMRWBENC + #define AMR_VO_FUNC LSX_DLENTRY_DYNAMIC +#else + #define AMR_VO_FUNC LSX_DLENTRY_STATIC +#endif + +#if defined(HAVE_VO_AMRWBENC_ENC_IF_H) || defined(DL_VO_AMRWBENC) #define AMR_VO 1 #endif #define AMR_VO_FUNC_ENTRIES(f,x) \ - AMR_FUNC(f,x, void*, E_IF_init, (void)) \ - AMR_FUNC(f,x, int, E_IF_encode,(void* state, int16_t mode, int16_t* in, uint8_t* out, int16_t dtx)) \ - AMR_FUNC(f,x, void, E_IF_exit, (void* state)) \ + AMR_VO_FUNC(f,x, void*, E_IF_init, (void)) \ + AMR_VO_FUNC(f,x, int, E_IF_encode,(void* state, int16_t mode, int16_t* in, uint8_t* out, int16_t dtx)) \ + AMR_VO_FUNC(f,x, void, E_IF_exit, (void* state)) \ #define AmrEncoderInit() \ E_IF_init() @@ -99,7 +105,7 @@ static const char* const amr_opencore_library_names[] = #define AMR_VO_DESC "amr-wb VisualOn library" static const char* const amr_vo_library_names[] = { -#ifdef DL_AMRWB +#ifdef DL_VO_AMRWBENC "libvo-amrwbenc", "libvo-amrwbenc-0", #endif commit 9abe8822ba60526b4f02fb0fbf4634f4eb9bf51d Author: Mans Rullgard <ma...@ma...> Date: Fri Aug 14 00:57:49 2020 +0100 amr: replace 3GPP reference library with vo-amrwbenc The 3GPP reference code has licensing restrictions and isn't commonly available as a package. Between them, the opencore and vo-amrwbenc cover the same functionality, so use those instead. diff --git a/INSTALL b/INSTALL index cd3542f0..3e8e272e 100644 --- a/INSTALL +++ b/INSTALL @@ -17,7 +17,7 @@ libraries, where to get them (if not from your OS distribution), and their licence types, is as follows: OpencoreAMR-NB/WB http://sourceforge.net/projects/opencore-amr Apache -AMR-NB/WB http://www.penguin.cz/~utx/amr See library web page +VisualOn AMR-WB http://sourceforge.net/projects/opencore-amr Apache AO http://xiph.org/ao GPL FLAC http://flac.sourceforge.net BSD LADSPA http://www.ladspa.org LGPL + plugins' licence diff --git a/configure.ac b/configure.ac index 213402ec..42ab2a6c 100644 --- a/configure.ac +++ b/configure.ac @@ -448,14 +448,13 @@ AC_OPTIONAL_FORMAT(flac, FLAC, dnl When enable_dl_amrbw, do not let add libraries to be linked in dnl since they will be dlopen()'ed instead. ac_sox_save_AMRWB_LIBS="$AMRWB_LIBS" -tmp_using_amrwb=$opt_default +tmp_using_amrwb=no AC_CHECK_HEADERS(opencore-amrwb/dec_if.h, - [AC_CHECK_LIB(opencore-amrwb, D_IF_init, - AMRWB_LIBS="$AMRWB_LIBS -lopencore-amrwb", tmp_using_amrwb=no)], - [AC_CHECK_HEADERS(amrwb/dec.h, - [AC_CHECK_LIB(amrwb, D_IF_init, - AMRWB_LIBS="$AMRWB_LIBS -lamrwb",tmp_using_amrwb=no)], - tmp_using_amrwb=no)]) + [AC_CHECK_LIB(opencore-amrwb, D_IF_init, + [AMRWB_LIBS="$AMRWB_LIBS -lopencore-amrwb"; tmp_using_amrwb=$opt_default])]) +AC_CHECK_HEADERS(vo-amrwbenc/enc_if.h, + [AC_CHECK_LIB(vo-amrwbenc, E_IF_init, + AMRWB_LIBS="$AMRWB_LIBS -lvo-amrwbenc"; tmp_using_amrwb=$opt_default)]) AC_ARG_ENABLE(dl_amrwb, AS_HELP_STRING([--enable-dl-amrwb], [Dlopen amrbw instead of linking in.]), @@ -479,10 +478,7 @@ tmp_using_amrnb=$opt_default AC_CHECK_HEADERS(opencore-amrnb/interf_dec.h, [AC_CHECK_LIB(opencore-amrnb, Decoder_Interface_init, AMRNB_LIBS="$AMRNB_LIBS -lopencore-amrnb", tmp_using_amrnb=no)], - [AC_CHECK_HEADER(amrnb/sp_dec.h, - [AC_CHECK_LIB(amrnb, Decoder_Interface_init, - AMRNB_LIBS="$AMRNB_LIBS -lamrnb", tmp_using_amrnb=no)], - tmp_using_amrnb=no)]) + [tmp_using_amrnb=no]) AC_ARG_ENABLE(dl_amrnb, AS_HELP_STRING([--enable-dl-amrnb], [Dlopen amrnb instead of linking in.]), diff --git a/src/amr-nb.c b/src/amr-nb.c index 6524cb2d..c68ad2bd 100644 --- a/src/amr-nb.c +++ b/src/amr-nb.c @@ -16,11 +16,10 @@ */ /* - * In order to use the AMR format with SoX, you need to have an AMR - * library installed at SoX build time. Currently, the SoX build system - * recognizes two AMR implementations, in the following order: - * http://opencore-amr.sourceforge.net/ - * http://ftp.penguin.cz/pub/users/utx/amr/ + * In order to use the AMR format with SoX, you need to have an + * AMR library installed at SoX build time. The SoX build system + * recognizes the AMR implementations available from + * http://opencore-amr.sourceforge.net/ */ #include "sox_i.h" @@ -54,10 +53,8 @@ static char const amrnb_magic[] = "#!AMR\n"; /* OpenCore definitions: */ -#if defined(HAVE_OPENCORE_AMRNB_INTERF_DEC_H) || defined(DL_AMRNB) - #define AMR_OPENCORE 1 - #define AMR_OPENCORE_ENABLE_ENCODE 1 -#endif +#define AMR_OPENCORE 1 +#define AMR_OPENCORE_ENABLE_ENCODE 1 #define AMR_OPENCORE_FUNC_ENTRIES(f,x) \ AMR_FUNC(f,x, void*, Encoder_Interface_init, (int dtx)) \ @@ -67,17 +64,17 @@ static char const amrnb_magic[] = "#!AMR\n"; AMR_FUNC(f,x, void, Decoder_Interface_Decode, (void* state, const unsigned char* in, short* out, int bfi)) \ AMR_FUNC(f,x, void, Decoder_Interface_exit, (void* state)) \ -#define AmrOpencoreEncoderInit() \ +#define AmrEncoderInit() \ Encoder_Interface_init(1) -#define AmrOpencoreEncoderEncode(state, mode, in, out, forceSpeech) \ +#define AmrEncoderEncode(state, mode, in, out, forceSpeech) \ Encoder_Interface_Encode(state, mode, in, out, forceSpeech) -#define AmrOpencoreEncoderExit(state) \ +#define AmrEncoderExit(state) \ Encoder_Interface_exit(state) -#define AmrOpencoreDecoderInit() \ +#define AmrDecoderInit() \ Decoder_Interface_init() -#define AmrOpencoreDecoderDecode(state, in, out, bfi) \ +#define AmrDecoderDecode(state, in, out, bfi) \ Decoder_Interface_Decode(state, in, out, bfi) -#define AmrOpencoreDecoderExit(state) \ +#define AmrDecoderExit(state) \ Decoder_Interface_exit(state) #define AMR_OPENCORE_DESC "amr-nb OpenCore library" @@ -90,43 +87,4 @@ static const char* const amr_opencore_library_names[] = NULL }; -/* 3GPP (reference implementation) definitions: */ - -#if !defined(HAVE_OPENCORE_AMRNB_INTERF_DEC_H) || defined(DL_AMRNB) - #define AMR_GP3 1 -#endif - -#define AMR_GP3_FUNC_ENTRIES(f,x) \ - AMR_FUNC(f,x, void*, VADxEncoder_Interface_init, (int dtx, char vad2_code)) \ - AMR_FUNC(f,x, int, GP3VADxEncoder_Interface_Encode, (void* state, enum amrnb_mode mode, short* in, unsigned char* out, int forceSpeech, char vad2_code)) \ - AMR_FUNC(f,x, void, Encoder_Interface_exit, (void* state)) \ - AMR_FUNC(f,x, void*, Decoder_Interface_init, (void)) \ - AMR_FUNC(f,x, void, GP3Decoder_Interface_Decode, (void* state, unsigned char* in, short* out, int bfi)) \ - AMR_FUNC(f,x, void, Decoder_Interface_exit, (void* state)) \ - -#define AmrGp3EncoderInit() \ - VADxEncoder_Interface_init(1, 0) -#define AmrGp3EncoderEncode(state, mode, in, out, forceSpeech) \ - GP3VADxEncoder_Interface_Encode(state, mode, in, out, forceSpeech, 0) -#define AmrGp3EncoderExit(state) \ - Encoder_Interface_exit(state) -#define AmrGp3DecoderInit() \ - Decoder_Interface_init() -#define AmrGp3DecoderDecode(state, in, out, bfi) \ - GP3Decoder_Interface_Decode(state, in, out, bfi) -#define AmrGp3DecoderExit(state) \ - Decoder_Interface_exit(state) - -#define AMR_GP3_DESC "amr-nb 3GPP reference library" -static const char* const amr_gp3_library_names[] = -{ -#ifdef DL_AMRWB - "libamrnb-3", - "libamrnb", - "amrnb", - "cygamrnb-3", -#endif - NULL -}; - #include "amr.h" diff --git a/src/amr-wb.c b/src/amr-wb.c index 5021e867..7b5a66d8 100644 --- a/src/amr-wb.c +++ b/src/amr-wb.c @@ -16,11 +16,10 @@ */ /* - * In order to use the AMR format with SoX, you need to have an AMR - * library installed at SoX build time. Currently, the SoX build system - * recognizes two AMR implementations, in the following order: - * http://opencore-amr.sourceforge.net/ - * http://ftp.penguin.cz/pub/users/utx/amr/ + * In order to use the AMR format with SoX, you need to have an + * AMR library installed at SoX build time. The SoX build system + * recognizes the AMR implementations available from + * http://opencore-amr.sourceforge.net/ */ #include "sox_i.h" @@ -33,7 +32,7 @@ static char const amrwb_magic[] = "#!AMR-WB\n"; #define amr_magic amrwb_magic #define amr_priv_t amrwb_priv_t #define amr_opencore_funcs amrwb_opencore_funcs -#define amr_gp3_funcs amrwb_gp3_funcs +#define amr_vo_funcs amrwb_vo_funcs #define AMR_CODED_MAX 61 /* NB_SERIAL_MAX */ #define AMR_ENCODING SOX_ENCODING_AMR_WB @@ -62,11 +61,11 @@ static char const amrwb_magic[] = "#!AMR-WB\n"; AMR_FUNC(f,x, void, D_IF_decode, (void* state, const unsigned char* in, short* out, int bfi)) \ AMR_FUNC(f,x, void, D_IF_exit, (void* state)) \ -#define AmrOpencoreDecoderInit() \ +#define AmrDecoderInit() \ D_IF_init() -#define AmrOpencoreDecoderDecode(state, in, out, bfi) \ +#define AmrDecoderDecode(state, in, out, bfi) \ D_IF_decode(state, in, out, bfi) -#define AmrOpencoreDecoderExit(state) \ +#define AmrDecoderExit(state) \ D_IF_exit(state) #define AMR_OPENCORE_DESC "amr-wb OpenCore library" @@ -79,41 +78,30 @@ static const char* const amr_opencore_library_names[] = NULL }; -/* 3GPP (reference implementation) definitions: */ +/* VO definitions: */ -#if !defined(HAVE_OPENCORE_AMRWB_DEC_IF_H) || defined(DL_AMRWB) - #define AMR_GP3 1 +#if defined(HAVE_VO_AMRWBENC_ENC_IF_H) || defined(DL_AMRWB) + #define AMR_VO 1 #endif -#define AMR_GP3_FUNC_ENTRIES(f,x) \ +#define AMR_VO_FUNC_ENTRIES(f,x) \ AMR_FUNC(f,x, void*, E_IF_init, (void)) \ - AMR_FUNC(f,x, int, GP3E_IF_encode,(void* state, int16_t mode, int16_t* in, uint8_t* out, int16_t dtx)) \ + AMR_FUNC(f,x, int, E_IF_encode,(void* state, int16_t mode, int16_t* in, uint8_t* out, int16_t dtx)) \ AMR_FUNC(f,x, void, E_IF_exit, (void* state)) \ - AMR_FUNC(f,x, void*, D_IF_init, (void)) \ - AMR_FUNC(f,x, void, GP3D_IF_decode,(void* state, uint8_t* in, int16_t* out, int32_t bfi)) \ - AMR_FUNC(f,x, void, D_IF_exit, (void* state)) \ -#define AmrGp3EncoderInit() \ +#define AmrEncoderInit() \ E_IF_init() -#define AmrGp3EncoderEncode(state, mode, in, out, forceSpeech) \ - GP3E_IF_encode(state, mode, in, out, forceSpeech) -#define AmrGp3EncoderExit(state) \ +#define AmrEncoderEncode(state, mode, in, out, forceSpeech) \ + E_IF_encode(state, mode, in, out, forceSpeech) +#define AmrEncoderExit(state) \ E_IF_exit(state) -#define AmrGp3DecoderInit() \ - D_IF_init() -#define AmrGp3DecoderDecode(state, in, out, bfi) \ - GP3D_IF_decode(state, in, out, bfi) -#define AmrGp3DecoderExit(state) \ - D_IF_exit(state) -#define AMR_GP3_DESC "amr-wb 3GPP reference library" -static const char* const amr_gp3_library_names[] = +#define AMR_VO_DESC "amr-wb VisualOn library" +static const char* const amr_vo_library_names[] = { #ifdef DL_AMRWB - "libamrwb-3", - "libamrwb", - "amrwb", - "cygamrwb-3", + "libvo-amrwbenc", + "libvo-amrwbenc-0", #endif NULL }; diff --git a/src/amr.h b/src/amr.h index 12fb52b5..fe4ef368 100644 --- a/src/amr.h +++ b/src/amr.h @@ -28,49 +28,38 @@ typedef struct amr_opencore_funcs { #endif /* AMR_OPENCORE */ -#ifdef AMR_GP3 - -LSX_DLENTRIES_TO_FUNCTIONS(AMR_GP3_FUNC_ENTRIES) - -typedef struct amr_gp3_funcs { - LSX_DLENTRIES_TO_PTRS(AMR_GP3_FUNC_ENTRIES, amr_dl); -} amr_gp3_funcs; - -#endif /* AMR_GP3 */ - -#if defined(AMR_OPENCORE) && defined (AMR_GP3) - #define AMR_CALL(p, opencoreFunc, gp3Func, args) \ - ((p)->loaded_opencore ? ((p)->opencore.opencoreFunc args) : ((p)->gp3.gp3Func args)) - #if AMR_OPENCORE_ENABLE_ENCODE - #define AMR_CALL_ENCODER AMR_CALL - #else - #define AMR_CALL_ENCODER(p, opencoreFunc, gp3Func, args) \ - ((p)->gp3.gp3Func args) - #endif -#elif defined(AMR_OPENCORE) - #define AMR_CALL(p, opencoreFunc, gp3Func, args) \ - ((p)->opencore.opencoreFunc args) - #define AMR_CALL_ENCODER AMR_CALL -#elif defined(AMR_GP3) - #define AMR_CALL(p, opencoreFunc, gp3Func, args) \ - ((p)->gp3.gp3Func args) - #define AMR_CALL_ENCODER AMR_CALL +#ifdef AMR_VO + +LSX_DLENTRIES_TO_FUNCTIONS(AMR_VO_FUNC_ENTRIES) + +typedef struct amr_vo_funcs { + LSX_DLENTRIES_TO_PTRS(AMR_VO_FUNC_ENTRIES, amr_dl); +} amr_vo_funcs; + +#endif /* AMR_VO */ + +#define AMR_CALL(p, func, args) ((p)->opencore.func args) + +#ifdef AMR_VO + #define AMR_CALL_ENCODER(p, func, args) ((p)->vo.func args) +#else + #define AMR_CALL_ENCODER(p, func, args) ((p)->opencore.func args) #endif typedef struct amr_priv_t { void* state; unsigned mode; size_t pcm_index; - int loaded_opencore; #ifdef AMR_OPENCORE amr_opencore_funcs opencore; #endif /* AMR_OPENCORE */ -#ifdef AMR_GP3 - amr_gp3_funcs gp3; -#endif /* AMR_GP3 */ +#ifdef AMR_VO + amr_vo_funcs vo; +#endif /* AMR_VO */ short pcm[AMR_FRAME]; } priv_t; +#ifdef AMR_OPENCORE static size_t decode_1_frame(sox_format_t * ft) { priv_t * p = (priv_t *)ft->priv; @@ -87,9 +76,10 @@ static size_t decode_1_frame(sox_format_t * ft) n--; if (lsx_readbuf(ft, &coded[1], n) != n) return AMR_FRAME; - AMR_CALL(p, AmrOpencoreDecoderDecode, AmrGp3DecoderDecode, (p->state, coded, p->pcm, 0)); + AMR_CALL(p, AmrDecoderDecode, (p->state, coded, p->pcm, 0)); return 0; } +#endif static int openlibrary(priv_t* p, int encoding) { @@ -108,42 +98,28 @@ static int openlibrary(priv_t* p, int encoding) amr_opencore_library_names, open_library_result); if (!open_library_result) - { - p->loaded_opencore = 1; return SOX_SUCCESS; - } - } - else - { - lsx_report("Not attempting to load " AMR_OPENCORE_DESC " because it does not support encoding."); + lsx_fail("Unable to open " AMR_OPENCORE_DESC); + return SOX_EOF; } #endif /* AMR_OPENCORE */ -#ifdef AMR_GP3 - LSX_DLLIBRARY_TRYOPEN( - 0, - &p->gp3, - amr_dl, - AMR_GP3_FUNC_ENTRIES, - AMR_GP3_DESC, - amr_gp3_library_names, - open_library_result); - if (!open_library_result) - return SOX_SUCCESS; -#endif /* AMR_GP3 */ +#ifdef AMR_VO + if (encoding) { + LSX_DLLIBRARY_TRYOPEN( + 0, + &p->vo, + amr_dl, + AMR_VO_FUNC_ENTRIES, + AMR_VO_DESC, + amr_vo_library_names, + open_library_result); + if (!open_library_result) + return SOX_SUCCESS; + lsx_fail("Unable to open " AMR_VO_DESC); + } +#endif /* AMR_VO */ - lsx_fail( - "Unable to open " -#ifdef AMR_OPENCORE - AMR_OPENCORE_DESC -#endif -#if defined(AMR_OPENCORE) && defined(AMR_GP3) - " or " -#endif -#ifdef AMR_GP3 - AMR_GP3_DESC -#endif - "."); return SOX_EOF; } @@ -152,11 +128,12 @@ static void closelibrary(priv_t* p) #ifdef AMR_OPENCORE LSX_DLLIBRARY_CLOSE(&p->opencore, amr_dl); #endif -#ifdef AMR_GP3 - LSX_DLLIBRARY_CLOSE(&p->gp3, amr_dl); +#ifdef AMR_VO + LSX_DLLIBRARY_CLOSE(&p->vo, amr_dl); #endif } +#ifdef AMR_OPENCORE static size_t amr_duration_frames(sox_format_t * ft) { off_t frame_size, data_start_offset = lsx_tell(ft); @@ -178,9 +155,14 @@ static size_t amr_duration_frames(sox_format_t * ft) lsx_seeki(ft, data_start_offset, SEEK_SET); return frames; } +#endif static int startread(sox_format_t * ft) { +#if !defined(AMR_OPENCORE) + lsx_fail_errno(ft, SOX_EOF, "SoX was compiled without AMR-WB decoding support."); + return SOX_EOF; +#else priv_t * p = (priv_t *)ft->priv; char buffer[sizeof(amr_magic) - 1]; int open_library_result; @@ -197,7 +179,7 @@ static int startread(sox_format_t * ft) return open_library_result; p->pcm_index = AMR_FRAME; - p->state = AMR_CALL(p, AmrOpencoreDecoderInit, AmrGp3DecoderInit, ()); + p->state = AMR_CALL(p, AmrDecoderInit, ()); if (!p->state) { closelibrary(p); @@ -211,8 +193,11 @@ static int startread(sox_format_t * ft) ft->signal.length = ft->signal.length != SOX_IGNORE_LENGTH && ft->seekable? (size_t)(amr_duration_frames(ft) * .02 * ft->signal.rate +.5) : SOX_UNSPEC; return SOX_SUCCESS; +#endif } +#ifdef AMR_OPENCORE + static size_t read_samples(sox_format_t * ft, sox_sample_t * buf, size_t len) { priv_t * p = (priv_t *)ft->priv; @@ -231,14 +216,21 @@ static size_t read_samples(sox_format_t * ft, sox_sample_t * buf, size_t len) static int stopread(sox_format_t * ft) { priv_t * p = (priv_t *)ft->priv; - AMR_CALL(p, AmrOpencoreDecoderExit, AmrGp3DecoderExit, (p->state)); + AMR_CALL(p, AmrDecoderExit, (p->state)); closelibrary(p); return SOX_SUCCESS; } +#else + +#define read_samples NULL +#define stopread NULL + +#endif + static int startwrite(sox_format_t * ft) { -#if !defined(AMR_GP3) && !AMR_OPENCORE_ENABLE_ENCODE +#if !defined(AMR_VO) && !AMR_OPENCORE_ENABLE_ENCODE lsx_fail_errno(ft, SOX_EOF, "SoX was compiled without AMR-WB encoding support."); return SOX_EOF; #else @@ -258,7 +250,7 @@ static int startwrite(sox_format_t * ft) if (open_library_result != SOX_SUCCESS) return open_library_result; - p->state = AMR_CALL_ENCODER(p, AmrOpencoreEncoderInit, AmrGp3EncoderInit, ()); + p->state = AMR_CALL_ENCODER(p, AmrEncoderInit, ()); if (!p->state) { closelibrary(p); @@ -272,13 +264,13 @@ static int startwrite(sox_format_t * ft) #endif } -#if defined(AMR_GP3) || AMR_OPENCORE_ENABLE_ENCODE +#if defined(AMR_VO) || AMR_OPENCORE_ENABLE_ENCODE static sox_bool encode_1_frame(sox_format_t * ft) { priv_t * p = (priv_t *)ft->priv; uint8_t coded[AMR_CODED_MAX]; - int n = AMR_CALL_ENCODER(p, AmrOpencoreEncoderEncode, AmrGp3EncoderEncode, (p->state, p->mode, p->pcm, coded, 1)); + int n = AMR_CALL_ENCODER(p, AmrEncoderEncode, (p->state, p->mode, p->pcm, coded, 1)); sox_bool result = lsx_writebuf(ft, coded, (size_t) (size_t) (unsigned)n) == (unsigned)n; if (!result) lsx_fail_errno(ft, errno, "write error"); @@ -314,7 +306,7 @@ static int stopwrite(sox_format_t * ft) if (!encode_1_frame(ft)) result = SOX_EOF; } - AMR_CALL_ENCODER(p, AmrOpencoreEncoderExit, AmrGp3EncoderExit, (p->state)); + AMR_CALL_ENCODER(p, AmrEncoderExit, (p->state)); return result; } @@ -323,7 +315,7 @@ static int stopwrite(sox_format_t * ft) #define write_samples NULL #define stopwrite NULL -#endif /* defined(AMR_GP3) || AMR_OPENCORE_ENABLE_ENCODE */ +#endif /* defined(AMR_VO) || AMR_OPENCORE_ENABLE_ENCODE */ sox_format_handler_t const * AMR_FORMAT_FN(void); sox_format_handler_t const * AMR_FORMAT_FN(void) commit cf7ad263712747461a49a8758f26a064a7042980 Author: Mans Rullgard <ma...@ma...> Date: Thu Aug 13 22:21:17 2020 +0100 amr: drop pointless ifdefs These files are built only if HAVE_AMR[NW]B are defined. No need to check again. diff --git a/src/amr-nb.c b/src/amr-nb.c index 8733b035..6524cb2d 100644 --- a/src/amr-nb.c +++ b/src/amr-nb.c @@ -25,8 +25,6 @@ #include "sox_i.h" -#ifdef HAVE_AMRNB - /* Common definitions: */ enum amrnb_mode { amrnb_mode_dummy }; @@ -132,6 +130,3 @@ static const char* const amr_gp3_library_names[] = }; #include "amr.h" - -#endif /* HAVE_AMRNB */ - diff --git a/src/amr-wb.c b/src/amr-wb.c index 24620bae..5021e867 100644 --- a/src/amr-wb.c +++ b/src/amr-wb.c @@ -25,8 +25,6 @@ #include "sox_i.h" -#ifdef HAVE_AMRWB - /* Common definitions: */ static const uint8_t amrwb_block_size[] = {18, 24, 33, 37, 41, 47, 51, 59, 61, 6, 6, 0, 0, 0, 1, 1}; @@ -121,5 +119,3 @@ static const char* const amr_gp3_library_names[] = }; #include "amr.h" - -#endif /* HAVE_AMRWB */ ----------------------------------------------------------------------- Summary of changes: INSTALL | 2 +- configure.ac | 91 ++++++------- sox.1 | 6 - src/Makefile.am | 9 -- src/amr-nb.c | 75 ++--------- src/amr-wb.c | 92 ++++++------- src/amr.h | 138 ++++++++++---------- src/mp3.c | 38 ++---- src/sox.c | 78 +---------- src/sox_i.h | 6 +- src/win32-ltdl.c | 385 ------------------------------------------------------- src/win32-ltdl.h | 71 ---------- 12 files changed, 172 insertions(+), 819 deletions(-) delete mode 100644 src/win32-ltdl.c delete mode 100644 src/win32-ltdl.h hooks/post-receive -- sox |
From: Mans R. <ma...@us...> - 2020-08-28 09:20:01
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, new-build has been updated discards 4a2c8e794af81fc141f9a1374108f269ab95e885 (commit) This update discarded existing revisions and left the branch pointing at a previous point in the repository history. * -- * -- N (5723b6f4909d5dab6b03d5cca2320b7475d7c2fc) \ O -- O -- O (4a2c8e794af81fc141f9a1374108f269ab95e885) The removed revisions are not necessarilly gone - if another reference still refers to them they will stay in the repository. No new revisions were added by this update. Summary of changes: configure.ac | 44 -------------------------------------------- 1 file changed, 44 deletions(-) hooks/post-receive -- sox |
From: Mans R. <ma...@us...> - 2020-08-27 17:42:21
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, new-build has been updated discards 7b91e81423a132b732cc8c8322fb086b8d6b232b (commit) discards 6026bfd68cdf1f99650e8c3abe1d411394c7a66b (commit) discards 3ff11802d0b5974ebe6065e551b8f7a05926aa7f (commit) discards a767e61f3dbb60fbbb5626c74c56507483aac247 (commit) discards f5faacdf6086e20402cdf83fc27a2b6321bf6bca (commit) discards 48eea35c54edb0f6a864f41a06e7afd6481a9dc1 (commit) discards 79b2f228c1eb4c7019ab5aec1c1752a3d9cbcf98 (commit) discards 50e65e2018cb3e6076dcfefafcfd6de5ec4c3a93 (commit) discards 944f549b9cfe32fe98abd6958296780ba6661f79 (commit) discards 7da55e89e98389838420e7c267d9cd7534f29d38 (commit) discards ad8dea54f724df41bc1da61571452c318bc78f07 (commit) discards aca2e31a2ee56b125a582c252efc26348ae4152b (commit) discards ba547c619638b39fe95d2183765cc3d37df794a6 (commit) discards 888ce48bf887c740b67d12617aa58fe9e98d1f82 (commit) discards ed8b26878acc3ccb78ccd0fed02a5f1e17f30e43 (commit) discards 93c9ced5623942df915ec1db18e46b41b9968514 (commit) discards ba503af0b34fb5b63d884c10d0afba252a7d462c (commit) discards 9b5f48c105b116297eb678b7107749db1b862472 (commit) discards 5105435069307783fb84e1a5ed20a3a942bb6cec (commit) discards f02e4715777431bf688dc1876e2aef865d528c9c (commit) discards 523bbb807cf5b830100c2d01f09c9d7b0a451f35 (commit) discards f0acf3f1455abf9aabe439517317fa5156c00069 (commit) discards dc391ef2d37a56b502c18359f18df72451ff715c (commit) discards e6e16c79a2330665b7072dcb1bb94e2b168c638b (commit) discards d1f891904fc04ad2be6da11f8b18a77aa40c7152 (commit) discards 08f5607770e6e3d4fdc4f7b4aaa2cec9e542a3ee (commit) discards fdea6b59f799f5237fbe01a90ebc2bf418503107 (commit) discards 25a0a14e23abed549de86c045cd948afbace4c37 (commit) discards 7413ba1eae3c16e76f39361ef9e9238dc445b957 (commit) discards a9676bb5a8914621dc03c7d97b1aad098b547c7d (commit) discards 3f37546c939c38fa734cc6ad6ccd8e68f3d973fc (commit) discards 28ffa1c360bee946952d9715c7b0250f007d6a52 (commit) discards 73e2e8af1a92b316dc6bc674d6cfa4ec0415f317 (commit) via 4a2c8e794af81fc141f9a1374108f269ab95e885 (commit) via 5723b6f4909d5dab6b03d5cca2320b7475d7c2fc (commit) via 5f10f5ab4cdf5f13d5f1b570e4f702aac1fcc3c4 (commit) via 8eb4fbd44792ce595d4d53a976a3475cbc12a3e5 (commit) via aef64cdc47e80b3a76f425167d9d0ae2f937f684 (commit) via b49cdde669d9024efe587e82a128440b7e4374ec (commit) via 413aaae0c5758a6b8274f491a7e9d245543da719 (commit) via cfbc0ffae91065dd129aa04520ff717e9ab7dde0 (commit) via 6cbe77252006f245a05de47468c8f319931a230b (commit) via 408b0bfd1827fafb15bf7ee13e12c95282463876 (commit) via 4b61bb197642eaecc4db7ce339dcf06630012ef8 (commit) via 56779254bf4a3a638e6c45ef5751198fa5b2c660 (commit) via 7d96cf238a01d79f7a926abeb615371d9e6e8ed4 (commit) via 5ebae1af409ea59797f4e5cf18df8fcfd01dbde0 (commit) via 14f5fc70c6b0256eb15d524e9c282363bf3e5974 (commit) via 620bc011d30a1b87c289c8489e48f7c9e9cc653b (commit) via 3bda79c21b52f0aac69848d041c0cdadd7421b0f (commit) via 703897b84bb4fa2b86d764beeefc90c34a33f683 (commit) via dff2d4bdfa5115ece2f32ba16795d79ada5724a0 (commit) via ca757c7eb3323a519bb5549f582cef4a774ead3e (commit) via b2e20072909ae5283ed5b29e1ff102dd18f918a0 (commit) via ac92caf53e3cb207c588a350b1b597c69e99c61f (commit) via 543dace42988ff9b750ef2aaacb46322eee84c2d (commit) via cefc5b9c607c0d6ef95eb4d0b617a52dc3dfa8b2 (commit) via 7f7e597df0212ba561c06fa5530396dfd0c3a415 (commit) via b7c43abefa3272aafe7a4f9b4562f19d0b0f31a6 (commit) via 9c7b6a0452b89099f24b78495b139f496ba54de7 (commit) via cf4734bb612e30b54dd9199c3ceb9a9d02215d83 (commit) via a29695e5117da76f8724a7cacd568d79c24846fc (commit) via f4977c87e80dfa058dc6c2f763f3f7ada05be376 (commit) via 0d44e15d428b6385b778da578333a095a808b463 (commit) via 784021f41f97a65471d961d39474c85ba00318de (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (7b91e81423a132b732cc8c8322fb086b8d6b232b) \ N -- N -- N (4a2c8e794af81fc141f9a1374108f269ab95e885) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4a2c8e794af81fc141f9a1374108f269ab95e885 Author: Mans Rullgard <ma...@ma...> Date: Thu Aug 27 12:34:13 2020 +0100 build: patch libtool to fix breakage on OpenBSD diff --git a/configure.ac b/configure.ac index 146d0d55..dca67b05 100644 --- a/configure.ac +++ b/configure.ac @@ -154,6 +154,50 @@ dnl Generate output files. AC_CONFIG_FILES(Makefile src/Makefile lpc10/Makefile sox.pc) AC_OUTPUT +dnl Patch the libtool script to fix linking on OpenBSD. When linking +dnl with the newly built libsox, the -L flag indicating its location +dnl must precede any other -L flags. Otherwise an older installed +dnl libsox may be picked instead. Only one of hunks 3 and 4 is +dnl expected to apply. Which one depends on the libtool version. +patch -f -s >/dev/null <<'EOF' +--- libtool~ ++++ libtool +@@ -9122,6 +9122,7 @@ + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= ++ pri_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; +@@ -9135,6 +9136,7 @@ + done + for deplib in $compile_deplibs; do + case $deplib in ++ -L.*) pri_libs="$pri_libs $deplib" ;; + -L*) + case " $new_libs " in + *" $deplib "*) ;; +@@ -9144,7 +9146,7 @@ + *) new_libs="$new_libs $deplib" ;; + esac + done +- compile_deplibs="$new_libs" ++ compile_deplibs="$pri_libs $new_libs" + + + compile_command="$compile_command $compile_deplibs" +@@ -10810,7 +10812,7 @@ + *) func_append new_libs " $deplib" ;; + esac + done +- compile_deplibs=$new_libs ++ compile_deplibs="$pri_libs $new_libs" + + + func_append compile_command " $compile_deplibs" +EOF + SOX_REPORT_SECTION([build], [Build options:]) SOX_REPORT_SECTION([with_libs], [Optional libraries:], [sort]) SOX_REPORT_SECTION([formats], [Optional formats:], [sort]) commit 5723b6f4909d5dab6b03d5cca2320b7475d7c2fc Author: Mans Rullgard <ma...@ma...> Date: Wed Aug 26 15:30:27 2020 +0100 build: do not link format modules against libsox The format modules should use symbols from the host process. Linking them against libsox can result in additional copies thereof being loaded with unpredictable results. Platforms that disallow unresolved symbols in shared libraries cannot support this feature. diff --git a/src/optional-fmts.am b/src/optional-fmts.am index 50bce818..098e76c6 100644 --- a/src/optional-fmts.am +++ b/src/optional-fmts.am @@ -10,7 +10,7 @@ else endif else libsox_fmt_alsa_la_SOURCES = alsa.c - libsox_fmt_alsa_la_LIBADD = libsox.la @ALSA_LIBS@ + libsox_fmt_alsa_la_LIBADD = @ALSA_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_alsa.la endif endif @@ -25,7 +25,7 @@ else endif else libsox_fmt_amr_nb_la_SOURCES = amr-nb.c amr.h - libsox_fmt_amr_nb_la_LIBADD = libsox.la @AMRNB_LIBS@ + libsox_fmt_amr_nb_la_LIBADD = @AMRNB_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_amr_nb.la endif endif @@ -40,7 +40,7 @@ else endif else libsox_fmt_amr_wb_la_SOURCES = amr-wb.c amr.h - libsox_fmt_amr_wb_la_LIBADD = libsox.la @AMRWB_LIBS@ + libsox_fmt_amr_wb_la_LIBADD = @AMRWB_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_amr_wb.la endif endif @@ -55,7 +55,7 @@ else endif else libsox_fmt_ao_la_SOURCES = ao.c - libsox_fmt_ao_la_LIBADD = libsox.la @AO_LIBS@ + libsox_fmt_ao_la_LIBADD = @AO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_ao.la endif endif @@ -70,7 +70,7 @@ else endif else libsox_fmt_coreaudio_la_SOURCES = coreaudio.c - libsox_fmt_coreaudio_la_LIBADD = libsox.la @COREAUDIO_LIBS@ + libsox_fmt_coreaudio_la_LIBADD = @COREAUDIO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_coreaudio.la endif endif @@ -85,7 +85,7 @@ else endif else libsox_fmt_flac_la_SOURCES = flac.c - libsox_fmt_flac_la_LIBADD = libsox.la @FLAC_LIBS@ + libsox_fmt_flac_la_LIBADD = @FLAC_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_flac.la endif endif @@ -100,7 +100,7 @@ else endif else libsox_fmt_gsm_la_SOURCES = gsm.c - libsox_fmt_gsm_la_LIBADD = libsox.la @LIBGSM_LIBS@ + libsox_fmt_gsm_la_LIBADD = @LIBGSM_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_gsm.la endif endif @@ -117,7 +117,7 @@ endif else libsox_fmt_lpc10_la_SOURCES = lpc10.c libsox_fmt_lpc10_la_CFLAGS = @LPC10_CFLAGS@ - libsox_fmt_lpc10_la_LIBADD = libsox.la @LPC10_LIBS@ + libsox_fmt_lpc10_la_LIBADD = @LPC10_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_lpc10.la endif endif @@ -132,7 +132,7 @@ else endif else libsox_fmt_mp3_la_SOURCES = mp3.c mp3-util.h - libsox_fmt_mp3_la_LIBADD = libsox.la @MP3_LIBS@ + libsox_fmt_mp3_la_LIBADD = @MP3_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_mp3.la endif endif @@ -149,7 +149,7 @@ endif else libsox_fmt_opus_la_SOURCES = opus.c libsox_fmt_opus_la_CFLAGS = @OPUS_CFLAGS@ - libsox_fmt_opus_la_LIBADD = libsox.la @OPUS_LIBS@ + libsox_fmt_opus_la_LIBADD = @OPUS_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_opus.la endif endif @@ -159,7 +159,6 @@ if STATIC_OSS libsox_la_SOURCES += oss.c else libsox_fmt_oss_la_SOURCES = oss.c - libsox_fmt_oss_la_LIBADD = libsox.la pkglib_LTLIBRARIES += libsox_fmt_oss.la endif endif @@ -174,7 +173,7 @@ else endif else libsox_fmt_pulseaudio_la_SOURCES = pulseaudio.c - libsox_fmt_pulseaudio_la_LIBADD = libsox.la @PULSEAUDIO_LIBS@ + libsox_fmt_pulseaudio_la_LIBADD = @PULSEAUDIO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_pulseaudio.la endif endif @@ -189,7 +188,7 @@ else endif else libsox_fmt_waveaudio_la_SOURCES = waveaudio.c - libsox_fmt_waveaudio_la_LIBADD = libsox.la @WAVEAUDIO_LIBS@ + libsox_fmt_waveaudio_la_LIBADD = @WAVEAUDIO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_waveaudio.la endif endif @@ -205,7 +204,7 @@ else endif else libsox_fmt_sndio_la_SOURCES = sndio.c - libsox_fmt_sndio_la_LIBADD = libsox.la @SNDIO_LIBS@ + libsox_fmt_sndio_la_LIBADD = @SNDIO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_sndio.la endif endif @@ -215,7 +214,6 @@ if STATIC_SUNAUDIO libsox_la_SOURCES += sunaudio.c else libsox_fmt_sunau_la_SOURCES = sunaudio.c - libsox_fmt_sunau_la_LIBADD = libsox.la pkglib_LTLIBRARIES += libsox_fmt_sunau.la endif endif @@ -230,7 +228,7 @@ else endif else libsox_fmt_vorbis_la_SOURCES = vorbis.c - libsox_fmt_vorbis_la_LIBADD = libsox.la @OGGVORBIS_LIBS@ + libsox_fmt_vorbis_la_LIBADD = @OGGVORBIS_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_vorbis.la endif endif @@ -245,7 +243,7 @@ else endif else libsox_fmt_wavpack_la_SOURCES = wavpack.c - libsox_fmt_wavpack_la_LIBADD = libsox.la @WAVPACK_LIBS@ + libsox_fmt_wavpack_la_LIBADD = @WAVPACK_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_wavpack.la endif endif @@ -263,34 +261,34 @@ endif else libsox_fmt_sndfile_la_SOURCES = sndfile.c libsox_fmt_sndfile_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_sndfile_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_sndfile_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_caf_la_SOURCES = caf.c sndfile.c libsox_fmt_caf_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_caf_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_caf_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_mat4_la_SOURCES = mat4.c sndfile.c libsox_fmt_mat4_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_mat4_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_mat4_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_mat5_la_SOURCES = mat5.c sndfile.c libsox_fmt_mat5_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_mat5_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_mat5_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_paf_la_SOURCES = paf.c sndfile.c libsox_fmt_paf_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_paf_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_paf_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_fap_la_SOURCES = fap.c sndfile.c libsox_fmt_fap_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_fap_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_fap_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_w64_la_SOURCES = w64.c sndfile.c libsox_fmt_w64_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_w64_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_w64_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_xi_la_SOURCES = xi.c sndfile.c libsox_fmt_wi_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_xi_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_xi_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_pvf_la_SOURCES = pvf.c sndfile.c libsox_fmt_pvf_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_pvf_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_pvf_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_sd2_la_SOURCES = sd2.c sndfile.c libsox_fmt_sd2_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_sd2_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_sd2_la_LIBADD = @LIBSNDFILE_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_sndfile.la libsox_fmt_caf.la libsox_fmt_mat4.la libsox_fmt_mat5.la libsox_fmt_paf.la libsox_fmt_fap.la libsox_fmt_w64.la libsox_fmt_xi.la libsox_fmt_pvf.la libsox_fmt_sd2.la endif endif commit 5f10f5ab4cdf5f13d5f1b570e4f702aac1fcc3c4 Author: Mans Rullgard <ma...@ma...> Date: Tue Aug 25 19:48:07 2020 +0100 build: replace exported symbols regex with a list Replace the hideous exported symbols regex with a simple list. The regex is completely unreadable and causes build errors on Solaris. diff --git a/src/Makefile.am b/src/Makefile.am index c4cd6c71..f30402fd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -87,7 +87,9 @@ endif libsox_la_CFLAGS = libsox_la_LDFLAGS = -no-undefined -version-info @SHLIB_VERSION@ \ - -export-symbols-regex '^(sox_.*|lsx_(([cm]|re)alloc.*|check_read_params|(close|open)_dllibrary|(debug(_more|_most)?|fail|report|warn)_impl|eof|error|fail_errno|filelength|find_(enum_(text|value)|file_extension)|flush|getopt(_init)?|lpc10_(create_(de|en)coder_state|(de|en)code)|raw(read|write)|read(_b_buf|buf|chars)|rewind|seeki|sigfigs3p?|strcasecmp|strdup|tell|unreadb|write(b|_b_buf|buf|s)))$$' + -export-symbols $(srcdir)/libsox.sym + +EXTRA_libsox_la_DEPENDENCIES = $(srcdir)/libsox.sym if HAVE_LIBLTDL libsox_la_CFLAGS += $(LIBLTDL_CFLAGS) diff --git a/src/libsox.sym b/src/libsox.sym new file mode 100644 index 00000000..8e217083 --- /dev/null +++ b/src/libsox.sym @@ -0,0 +1,95 @@ +lsx_calloc +lsx_check_read_params +lsx_close_dllibrary +lsx_debug_impl +lsx_debug_more_impl +lsx_debug_most_impl +lsx_eof +lsx_error +lsx_fail_errno +lsx_fail_impl +lsx_filelength +lsx_find_enum_text +lsx_find_enum_value +lsx_find_file_extension +lsx_flush +lsx_getopt +lsx_getopt_init +lsx_lpc10_create_decoder_state +lsx_lpc10_create_encoder_state +lsx_lpc10_decode +lsx_lpc10_encode +lsx_malloc +lsx_open_dllibrary +lsx_rawread +lsx_rawwrite +lsx_read_b_buf +lsx_readbuf +lsx_readchars +lsx_realloc +lsx_realloc_array +lsx_report_impl +lsx_rewind +lsx_seeki +lsx_sigfigs3 +lsx_sigfigs3p +lsx_strcasecmp +lsx_strdup +lsx_tell +lsx_unreadb +lsx_warn_impl +lsx_write_b_buf +lsx_writeb +lsx_writebuf +lsx_writes +sox_add_effect +sox_append_comment +sox_append_comments +sox_basename +sox_close +sox_copy_comments +sox_create_effect +sox_create_effects_chain +sox_delete_comments +sox_delete_effect +sox_delete_effect_last +sox_delete_effects +sox_delete_effects_chain +sox_effect_options +sox_effects_clips +sox_find_comment +sox_find_effect +sox_find_format +sox_flow_effects +sox_format_init +sox_format_quit +sox_format_supports_encoding +sox_get_effect_fns +sox_get_effects_globals +sox_get_encodings_info +sox_get_format_fns +sox_get_globals +sox_init +sox_init_encodinginfo +sox_is_playlist +sox_num_comments +sox_open_mem_read +sox_open_mem_write +sox_open_memstream_write +sox_open_read +sox_open_write +sox_parse_playlist +sox_pop_effect_last +sox_precision +sox_push_effect_last +sox_quit +sox_read +sox_seek +sox_stop_effect +sox_strerror +sox_trim_clear_start +sox_trim_get_start +sox_version +sox_version_info +sox_write +sox_write_handler commit 8eb4fbd44792ce595d4d53a976a3475cbc12a3e5 Author: Mans Rullgard <ma...@ma...> Date: Wed Aug 26 13:14:44 2020 +0100 sox: remove interactive volume control The interactive volume control feature is broken (SIGSEGV) with sunaudio output, and with OSS there is nothing to ensure it is operating on the correct device. Remove the feature and let the rare systems using these drivers cope without it just like all the others. Fixes build on NetBSD. diff --git a/sox.1 b/sox.1 index 4cdab5a5..8aa2b371 100644 --- a/sox.1 +++ b/sox.1 @@ -325,12 +325,6 @@ c8 c8 c. .TE .DT .SP -On some systems, SoX allows audio playback volume to be adjusted whilst -using -.BR play . -Where supported, this is achieved by tapping the `v' & `V' keys during -playback. -.SP To help with setting a suitable recording level, SoX includes a peak-level meter which can be invoked (before making the actual recording) as follows: .EX diff --git a/src/sox.c b/src/sox.c index 03f9571a..9e59a60d 100644 --- a/src/sox.c +++ b/src/sox.c @@ -45,26 +45,6 @@ #include <io.h> #endif -#ifdef HAVE_SUN_AUDIOIO_H - #include <sun/audioio.h> - #define HAVE_AUDIOIO_H 1 -#else -#ifdef HAVE_SYS_AUDIOIO_H - #include <sys/audioio.h> - #define HAVE_AUDIOIO_H 1 -#endif -#endif - -#ifdef HAVE_SYS_SOUNDCARD_H - #include <sys/soundcard.h> - #define HAVE_SOUNDCARD_H 1 -#else -#ifdef HAVE_MACHINE_SOUNDCARD_H - #include <machine/soundcard.h> - #define HAVE_SOUNDCARD_H 1 -#endif -#endif - #ifdef HAVE_SYS_TIME_H #include <sys/time.h> #endif @@ -1305,63 +1285,15 @@ static int kbhit(void) #define kbhit() 0 #endif -#ifdef HAVE_SOUNDCARD_H -#include <sys/ioctl.h> -static void adjust_volume(int delta) -{ - char * from_env = getenv("MIXERDEV"); - int vol1 = 0, vol2 = 0, fd = open(from_env? from_env : "/dev/mixer", O_RDWR); - if (fd >= 0) { - if (ioctl(fd, MIXER_READ(SOUND_MIXER_PCM), &vol1) != -1) { - int side1 = vol1 & 0xff, side2 = (vol1 >> 8) & 0xff; - delta = delta < 0? max(delta, -min(side1, side2)) : - min(delta, 100 - max(side1, side2)); - vol2 = ((side2 + delta) << 8) + side1 + delta; - lsx_debug("%04x %04x", vol1, vol2); - if (vol1 != vol2 && ioctl(fd, MIXER_WRITE(SOUND_MIXER_PCM), &vol2) < 0) - vol2 = vol1; - } - close(fd); - } - if (vol1 == vol2) - putc('\a', stderr); -} -#elif defined(HAVE_AUDIOIO_H) -static void adjust_volume(int delta) -{ - int vol1 = 0, vol2 = 0, fd = fileno((FILE*)ofile->ft->fp); - if (fd >= 0) { - audio_info_t audio_info; - if (ioctl(fd, AUDIO_GETINFO, &audio_info) >= 0) { - vol1 = (audio_info.play.gain * 100 + (AUDIO_MAX_GAIN >> 1)) / AUDIO_MAX_GAIN; - vol2 = range_limit(vol1 + delta, 0, 100); - AUDIO_INITINFO(&audio_info); - audio_info.play.gain = (vol2 * AUDIO_MAX_GAIN + 50) / 100; - audio_info.output_muted = 0; - lsx_debug("%04x %04x", vol1, vol2); - if (vol1 != vol2 && ioctl(fd, AUDIO_SETINFO, &audio_info) < 0) - vol2 = vol1; - } - } - if (vol1 == vol2) - putc('\a', stderr); -} -#else -static void adjust_volume(int delta) -{ - (void)delta; - putc('\a', stderr); -} -#endif - static int update_status(sox_bool all_done, void * client_data) { (void)client_data; if (interactive) while (kbhit()) { + int LSX_UNUSED ch; #ifdef HAVE_CONIO_H - int ch = _getch(); + ch = _getch(); #else - int ch = getchar(); + ch = getchar(); #endif #ifdef MORE_INTERACTIVE @@ -1401,10 +1333,6 @@ static int update_status(sox_bool all_done, void * client_data) user_restart_eff = sox_true; } #endif - switch (ch) { - case 'V': adjust_volume(+7); break; - case 'v': adjust_volume(-7); break; - } } display_status(all_done || user_abort); commit aef64cdc47e80b3a76f425167d9d0ae2f937f684 Author: Mans Rullgard <ma...@ma...> Date: Fri Aug 14 13:35:31 2020 +0100 build: rewrite most of configure using new macros Most of the checks are now a single macro call, making the configure script much easier to read. The use of --enable and --with flags has been streamlined. Optional libraries use --with-foo, some of them accepting the value 'dyn' to activate runtime dynamic loading. The optional formats use --enable, again with the value 'dyn' enabling dynamic loading. As before, the default behaviour is to detect libraries and enable support for available ones. If an explicitly enabled feature has a dependency that is missing or disabled, an error is reported. diff --git a/INSTALL b/INSTALL index 3e8e272e..170a5e70 100644 --- a/INSTALL +++ b/INSTALL @@ -53,17 +53,14 @@ To compile and install SoX (executables, libraries, manual pages) with a default configuration for your platform, run the following commands: ./configure - make -s + make make install -There should be no errors and few, if any, warnings during the `make --s' stage. Any warnings about pointer mismatch or conversion should +There should be no errors and few, if any, warnings during the `make' +stage. Any warnings about pointer mismatch or conversion should be treated with deep suspicion. -The `make install' command may require `root' priviliges; for example, -on some systems, the following modification to the command is needed: - - sudo make install +The `make install' command may require `root' priviliges. To run a selection of tests on the installed sox executable: @@ -81,8 +78,8 @@ Again, `root' priviliges may be needed at the install stages. -Custom build options on a POSIX system --------------------------------------- +Custom build options +-------------------- Selection of optional libraries and of other build options can be made by adding parameters to the `./configure' command line (above). Run @@ -104,61 +101,33 @@ For example, ./configure --with-distro='Super Linux OS 6.1' If any libraries are installed in a non-standard locations in your -system then you can use the CPPFLAGS and LDFLAGS variables to allow -configure to find them. For example: - -./configure CPPFLAGS="-I/home/sox/include -I/usr/local/multimedia/include" LDFLAGS="-L/home/sox/lib -L/usr/local/multimedia/lib" - -If you are compiling under cygwin and would like to create a static -sox.exe using mingw libraries then you can use the following: - -./configure CC="gcc -mno-cygwin" --disable-shared - -The next cygwin example is used to build the cygwin version of SoX that is -distributed by the project. It tells gcc to prefer static libraries -over dynamic ones and to use some static libraries compiled manually -and installed under /usr/local. - -./configure LDFLAGS="-static -L/usr/local/lib" CPPFLAGS=-I/usr/local/include - -You can run "cygcheck.exe src/sox.exe" after compiling to see which -dynamic DLL's will be required to be distributed with the cygwin -executable. +system, the compiler and linker must be informed of this. Often, +environment variables can be used for this purpose. For example, if +using the GNU or Clang/LLVM toolchains, the following might be used in +a Bourne-compatible shell: -Alternatively, you can make use of the "cygbuild" script distributed -with SoX source that is used to automate all steps of building -a win32 package. "osxbuild" script is used to automate all steps -of building a MacOS X package. +export CPATH=/usr/local/include +export LIBRARY_PATH=/usr/local/lib -Newer versions of SoX include support for loading libraries for -file formats at runtime. The main usage of this feature is to -allow shipping SoX without dependencies on external libraries -that are not globally used or have redistribution restrictions. -If you experience problems with this then you may wish to disable -this feature: +For other compilers and shells, consult their respective manuals. -./configure --without-libltdl +Optional features +----------------- -Also, the default behavior even when libltdl is used is to link -all file format handlers into libsox as there is a performance -hit when dynamically loading external libraries. To force a format -handler to be built as a dynamically loaded module, pass "dyn" to -its --with-* option. For example, to build pulseaudio handler as -an external dynamic library: +Support for some file formats is optional and controlled by --enable-* +flags to configure. If the value "dyn" is passed to these flags, +e.g. --enable-flac=dyn, the corresponding code is built as a module +and loaded at runtime. -./configure --with-pulseaudio=dyn +Use of external libraries is controlled by --with-* flags. Some of +these accept the value "dyn" to enable runtime loading of the library. -A subset of external libraries can be configured to be dlopen()'ed -at run time instead of being linked in. This will allow one to -distribute a binary with optional features that only require -a user to install the missing libraries into their system. This -can be enabled using: +The runtime loading feature is mainly useful for distributing the +"sox" executable to systems that may not have all the external +libraries installed. ---enable-dl-lame ---enable-dl-mad ---enable-dl-sndfile ---enable-dl-amrnb ---enable-dl-amrwb +For a complete list of optional formats and libraries, including which +support runtime loading, refer to the "configure --help" output. Testing ------- diff --git a/configure.ac b/configure.ac index b9822490..146d0d55 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,8 @@ LT_INIT([win32-dll]) AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=name], [Provide distribution name]), - AC_DEFINE_UNQUOTED(DISTRO, ["$with_distro"], [Distribution name])) + AC_DEFINE_UNQUOTED(DISTRO, ["$with_distro"], [Distribution name]) + SOX_REPORT([build], [distro name], [${with_distro:-unspecified}])) dnl Checks for programs. AC_PROG_CC @@ -58,6 +59,7 @@ AC_FUNC_FSEEKO dnl Check for OpenMP AC_OPENMP CFLAGS="$CFLAGS $OPENMP_CFLAGS" +SOX_REPORT([other], [OpenMP], [${OPENMP_CFLAGS:-no}]) if test "$ac_cv_header_glob_h" != yes; then AC_CHECK_FUNC([FindFirstFileA], [ @@ -66,470 +68,99 @@ if test "$ac_cv_header_glob_h" != yes; then fi AM_CONDITIONAL(HAVE_WIN32_GLOB, test "$HAVE_WIN32_GLOB" = yes) -AC_ARG_WITH(dyn-default,AS_HELP_STRING([--with-dyn-default],[Default to loading optional formats dynamically]),opt_default=dyn,opt_default=yes) - -AC_ARG_WITH(libltdl, - AS_HELP_STRING([--without-libltdl], - [Don't try to use libltdl for external dynamic library support]), - with_libltdl=$withval, with_libltdl=default) - -if test "$with_libltdl" = "default"; then - dnl Default to no libltdl support when building only static libraries - if test "$enable_shared" != "no"; then - using_libltdl=yes - else - using_libltdl=no - fi - with_libltdl="yes" -else - using_libltdl=$with_libltdl -fi - -dnl Check if ltdl should be enabled. -if test "$using_libltdl" != "no"; then - AC_CHECK_HEADERS(ltdl.h, - AC_CHECK_LIB(ltdl, lt_dlinit, LIBLTDL="$LIBLTDL -lltdl", - using_libltdl=no), using_libltdl=no) -fi -if test "$using_libltdl" = yes; then - AC_DEFINE([HAVE_LIBLTDL], 1, [Define to 1 if you have libltdl]) -fi -AM_CONDITIONAL(HAVE_LIBLTDL, test x$using_libltdl = xyes) -AC_SUBST(LIBLTDL) - - -dnl Check for magic library -AC_ARG_WITH(magic, - AS_HELP_STRING([--without-magic], - [Don't try to use magic])) -using_magic=no -if test "$with_magic" != "no"; then - using_magic=yes - AC_CHECK_HEADER(magic.h, - [AC_CHECK_LIB(magic, magic_open, MAGIC_LIBS="-lmagic",using_magic=no)], - using_magic=no) - if test "$with_magic" = "yes" -a "$using_magic" = "no"; then - AC_MSG_FAILURE([cannot find magic]) - fi -fi -if test "$using_magic" = yes; then - AC_DEFINE(HAVE_MAGIC, 1, [Define to 1 if you have magic.]) -fi -AM_CONDITIONAL(HAVE_MAGIC, test x$using_magic = xyes) -AC_SUBST(MAGIC_LIBS) - - - -dnl Check for png libraries -AC_ARG_WITH(png, - AS_HELP_STRING([--without-png], - [Don't try to use png])) -using_png=no -if test "$with_png" != "no"; then - AC_CHECK_HEADERS(png.h libpng/png.h,using_png=yes) - if test "$using_png" = "yes"; then - AC_CHECK_LIB(png, png_set_rows, PNG_LIBS="$PNG_LIBS -lpng -lz", - [AC_CHECK_LIB(png12, png_set_rows, - PNG_LIBS="$PNG_LIBS -lpng12 -lz", - using_png=no, -lz)], -lz) - fi - if test "$with_png" = "yes" -a "$using_png" = "no"; then - AC_MSG_FAILURE([cannot find png]) - fi -fi -if test "$using_png" = yes; then - AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have PNG.]) -fi -AM_CONDITIONAL(HAVE_PNG, test x$using_png = xyes) -AC_SUBST(PNG_LIBS) - - - -dnl Test for LADSPA -AC_ARG_WITH(ladspa, - AS_HELP_STRING([--without-ladspa], [Don't try to use LADSPA])) -using_ladspa=no -if test "$with_ladspa" != "no" -a "$using_libltdl" = "yes"; then - using_ladspa=yes - AC_DEFINE(HAVE_LADSPA_H, 1, [1 if should enable LADSPA]) -fi -LADSPA_PATH=${libdir}/ladspa -AC_ARG_WITH(ladspa-path, - AS_HELP_STRING([--with-ladspa-path], [Default search path for LADSPA plugins])) -AC_SUBST(LADSPA_PATH) - - - -dnl Check for MAD libraries -AC_ARG_WITH(mad, - AS_HELP_STRING([--without-mad], - [Don't try to use MAD (MP3 Audio Decoder)])) -using_mad=no -if test "$with_mad" != "no"; then - using_mad=yes - AC_CHECK_HEADERS(mad.h,, using_mad=no) - AC_MSG_CHECKING([whether to dlopen mad]) - AC_ARG_ENABLE(dl_mad, - AS_HELP_STRING([--enable-dl-mad], [Dlopen mad instead of linking in.]), - enable_dl_mad=$enableval, enable_dl_mad=no) - AC_MSG_RESULT($enable_dl_mad) - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_mad" = "xyes"; then - AC_DEFINE(DL_MAD, 1, [Define to dlopen() mad.]) - else - enable_dl_mad="no" - AC_CHECK_LIB(mad, mad_stream_buffer, MP3_LIBS="$MP3_LIBS -lmad",using_mad=no) - if test "$with_mad" = "yes" -a "$using_mad" = "no"; then - AC_MSG_FAILURE([cannot find libmad]) - fi - fi -fi - - - -dnl Check for id3tag libraries -AC_ARG_WITH(id3tag, - AS_HELP_STRING([--without-id3tag], - [Don't try to use id3tag])) -using_id3tag=no -if test "$with_id3tag" != "no"; then - using_id3tag=yes - AC_CHECK_HEADER(id3tag.h, - [AC_CHECK_LIB(id3tag, id3_file_open, MP3_LIBS="$MP3_LIBS -lid3tag -lz",using_id3tag=no, -lz)], - using_id3tag=no) - if test "$with_id3tag" = "yes" -a "$using_id3tag" = "no"; then - AC_MSG_FAILURE([cannot find id3tag]) - fi -fi -if test "$using_id3tag" = yes; then - AC_DEFINE(HAVE_ID3TAG, 1, [Define to 1 if you have id3tag.]) -fi -AM_CONDITIONAL(HAVE_ID3TAG, test x$using_id3tag = xyes) - - - -dnl Check for LAME library. -AC_ARG_WITH(lame, - AS_HELP_STRING([--without-lame], - [Don't try to use LAME (LAME Ain't an MP3 Encoder)])) -using_lame=no -if test "$with_lame" != "no"; then - using_lame=yes - AC_MSG_CHECKING([whether to dlopen lame]) - AC_ARG_ENABLE(dl_lame, - AS_HELP_STRING([--enable-dl-lame], [Dlopen lame instead of linking in.]), - enable_dl_lame=$enableval, enable_dl_lame=no) - AC_MSG_RESULT($enable_dl_lame) - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_lame" = "xyes"; then - AC_DEFINE(DL_LAME, 1, [Define to dlopen() lame.]) - else - enable_dl_lame="no" - AC_CHECK_HEADERS(lame/lame.h,, - [AC_CHECK_HEADERS(lame.h, [], using_lame=no)]) - AC_CHECK_LIB(mp3lame, lame_get_lametag_frame, MP3_LIBS="$MP3_LIBS -lmp3lame", using_lame=no) - if test "$with_lame" = "yes" -a "$using_lame" = "no"; then - AC_MSG_FAILURE([cannot find LAME]) - fi - fi -fi - - - -dnl Check for Twolame library -AC_ARG_WITH(twolame, - AS_HELP_STRING([--without-twolame], - [Don't try to use Twolame (MP2 Audio Encoder)])) -using_twolame=no -if test "$with_twolame" != "no"; then - using_twolame=yes - AC_CHECK_HEADERS(twolame.h,, using_twolame=no) - AC_MSG_CHECKING([whether to dlopen twolame]) - AC_ARG_ENABLE(dl_twolame, - AS_HELP_STRING([--enable-dl-twolame], [Dlopen twolame instead of linking in.]), - enable_dl_twolame=$enableval, enable_dl_twolame=no) - AC_MSG_RESULT($enable_dl_twolame) - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_twolame" = "xyes"; then - AC_DEFINE(DL_TWOLAME, 1, [Define to dlopen() libtwolame.]) - else - enable_dl_twolame="no" - AC_CHECK_LIB(twolame, twolame_init, MP3_LIBS="$MP3_LIBS -ltwolame",using_twolame=no) - if test "$with_twolame" = "yes" -a "$using_twolame" = "no"; then - AC_MSG_FAILURE([cannot find libtwolame]) - fi - fi -fi - -# Check for libgsm -HAVE_LIBGSM=yes -AC_CHECK_HEADERS(gsm/gsm.h, , - [AC_CHECK_HEADERS(gsm.h, , HAVE_LIBGSM=no)]) - AC_CHECK_LIB(gsm, gsm_create, [ - AC_DEFINE(HAVE_LIBGSM, 1, [Define if libgsm is available]) - LIBGSM_LIBS="$LIBGSM_LIBS -lgsm"], HAVE_LIBGSM=no) -AC_SUBST(LIBGSM_LIBS) - - - -# Check for liblpc10 -found_liblpc10=yes -AC_CHECK_HEADERS(lpc10.h, , - [AC_CHECK_HEADERS(lpc10.h, ,found_liblpc10=no)]) - AC_CHECK_LIB(lpc10, create_lpc10_encoder_state, LPC10_LIBS="$LPC10_LIBS -llpc10", found_liblpc10=no) -if test "$found_liblpc10" = yes; then - AC_DEFINE(HAVE_LIBLPC10, 1, [Define if you are using an external liblpc10]) -else - LPC10_CFLAGS='-I${top_srcdir}/lpc10' - LPC10_LIBS=../lpc10/liblpc10.la -fi -AM_CONDITIONAL(HAVE_LIBLPC10, test x$found_liblpc10 = xyes) - - - -# Check for Ogg Vorbis -AC_OPTIONAL_FORMAT(oggvorbis, OGGVORBIS, [AC_CHECK_HEADER(vorbis/codec.h, - [AC_CHECK_LIB(ogg, ogg_packet_clear, OGGVORBIS_LIBS="$OGGVORBIS_LIBS -logg", using_oggvorbis=no) - AC_CHECK_LIB(vorbis, vorbis_analysis_headerout, OGGVORBIS_LIBS="-lvorbis $OGGVORBIS_LIBS", using_oggvorbis=no, $OGGVORBIS_LIBS) - AC_CHECK_LIB(vorbisfile, ov_clear, OGGVORBIS_LIBS="-lvorbisfile $OGGVORBIS_LIBS", using_oggvorbis=no, $OGGVORBIS_LIBS) - AC_CHECK_LIB(vorbisenc, vorbis_encode_init_vbr, OGGVORBIS_LIBS="-lvorbisenc $OGGVORBIS_LIBS", using_oggvorbis=no, $OGGVORBIS_LIBS)], - using_oggvorbis=no)]) - -# Check for Opus -AC_OPTIONAL_FORMAT(opus, OPUS, - [PKG_CHECK_MODULES(OPUS, [opusfile], [], using_opus=no)], - using_opus=no) - - -dnl Check for FLAC library -AC_OPTIONAL_FORMAT(flac, FLAC, - [PKG_CHECK_MODULES([FLAC], [flac], [], [using_flac=no])]) - - -tmp_using_amrwb=no -AC_CHECK_HEADERS(opencore-amrwb/dec_if.h, - [AC_CHECK_LIB(opencore-amrwb, D_IF_init, - [OPENCORE_AMRWB_LIBS="$OPENCORE_AMRWB_LIBS -lopencore-amrwb"; tmp_using_amrwb=$opt_default])]) -AC_CHECK_HEADERS(vo-amrwbenc/enc_if.h, - [AC_CHECK_LIB(vo-amrwbenc, E_IF_init, - [VO_AMRWBENC_LIBS="$VO_AMRWBENC_LIBS -lvo-amrwbenc"; tmp_using_amrwb=$opt_default])]) -AC_ARG_ENABLE(dl_opencore_amrwb, - AS_HELP_STRING([--enable-dl-opencore-amrwb], - [Dlopen opencore-amrbw instead of linking in.])) -AC_ARG_ENABLE(dl_vo_amrwbenc, - AS_HELP_STRING([--enable-dl-vo-amrwbenc], - [Dlopen vo-amrbwenc instead of linking in.])) -if test "$using_libltdl" != "yes"; then - enable_dl_opencore_amrwb=no - enable_dl_vo_amrwbenc=no -fi -if test "$enable_dl_opencore_amrwb" = "yes"; then - AC_DEFINE(DL_OPENCORE_AMRWB, 1, [Define to dlopen() opencore-amrwb.]) -else - AMRWB_LIBS="$AMRWB_LIBS $OPENCORE_AMRWB_LIBS" -fi -if test "$enable_dl_vo_amrwbenc" = "yes"; then - AC_DEFINE(DL_VO_AMRWBENC, 1, [Define to dlopen() vo-amrwbenc.]) -else - AMRWB_LIBS="$AMRWB_LIBS $VO_AMRWBENC_LIBS" -fi -AC_OPTIONAL_FORMAT(amrwb, AMRWB, [using_amrwb=$tmp_using_amrwb]) - -dnl When enable_dl_amrnb, do not let add libraries to be linked in -dnl since they will be dlopen()'ed instead. -ac_sox_save_AMRNB_LIBS="$AMRNB_LIBS" -tmp_using_amrnb=$opt_default -AC_CHECK_HEADERS(opencore-amrnb/interf_dec.h, - [AC_CHECK_LIB(opencore-amrnb, Decoder_Interface_init, - AMRNB_LIBS="$AMRNB_LIBS -lopencore-amrnb", tmp_using_amrnb=no)], - [tmp_using_amrnb=no]) -AC_ARG_ENABLE(dl_opencore_amrnb, - AS_HELP_STRING([--enable-dl-opencore-amrnb], - [Dlopen opencore-amrnb instead of linking in.])) -if test "$using_libltdl" = "yes" -a "$enable_dl_opencore_amrnb" = "yes"; then - AC_DEFINE(DL_OPENCORE_AMRNB, 1, [Define to dlopen() opencore-amrnb.]) - dnl When enable_dl_amrnb, do not let SOX_PATH_AMRNB add libraries - dnl to be linked in (since they will be dlopen()'ed instead). - AMRNB_LIBS="$ac_sox_save_AMRNB_LIBS" - dnl Force to using regardless if headers or libraries were found. - tmp_using_amrnb=yes -else - enable_dl_opencore_amrnb="no" -fi -AC_OPTIONAL_FORMAT(amrnb, AMRNB, [using_amrnb=$tmp_using_amrnb]) - - -AC_OPTIONAL_FORMAT(wavpack, WAVPACK, [AC_CHECK_HEADER(wavpack/wavpack.h, [AC_CHECK_LIB(wavpack, WavpackGetSampleRate, WAVPACK_LIBS="$WAVPACK_LIBS -lwavpack",using_wavpack=no)], using_wavpack=no)]) - - - -AC_OPTIONAL_FORMAT(sndio, SNDIO, [AC_CHECK_HEADER(sndio.h, [AC_CHECK_LIB(sndio, sio_open, SNDIO_LIBS="$SNDIO_LIBS -lsndio",using_sndio=no)], using_sndio=no)]) - - - -AC_OPTIONAL_FORMAT(coreaudio, COREAUDIO, [AC_CHECK_HEADER(CoreAudio/CoreAudio.h, [COREAUDIO_LIBS="$COREAUDIO_LIBS -Wl,-framework,CoreAudio"], using_coreaudio=no)]) - - - -AC_OPTIONAL_FORMAT(alsa, ALSA, [AC_CHECK_HEADER(alsa/asoundlib.h, [AC_CHECK_LIB(asound, snd_pcm_open, ALSA_LIBS="$ALSA_LIBS -lasound",using_alsa=no)], using_alsa=no)]) - - - -AC_OPTIONAL_FORMAT(ao, AO, [AC_CHECK_HEADER(ao/ao.h, [AC_CHECK_LIB(ao, ao_play, AO_LIBS="$AO_LIBS -lao",using_ao=no)], using_ao=no)]) - - - -AC_OPTIONAL_FORMAT(pulseaudio, PULSEAUDIO, [AC_CHECK_HEADER(pulse/simple.h, [AC_CHECK_LIB(pulse, pa_simple_new, PULSEAUDIO_LIBS="$PULSEAUDIO_LIBS -lpulse -lpulse-simple",using_pulseaudio=no,"-lpulse-simple")], using_pulseaudio=no)]) - - -AC_OPTIONAL_FORMAT(waveaudio, WAVEAUDIO, [AC_CHECK_HEADER(mmsystem.h, [WAVEAUDIO_LIBS="$WAVEAUDIO_LIBS -lwinmm"], using_waveaudio=no, [[#include <windows.h>]])]) - -dnl When enable_dl_sndfile, do not let SOX_PATH_SNDFILE add libraries -dnl to be linked in (since they will be dlopen()'ed instead). -ac_sox_save_SNDFILE_LIBS="$LIBSNDFILE_LIBS" -SOX_PATH_SNDFILE(tmp_using_sndfile=$opt_default, tmp_using_sndfile=no) -AC_ARG_ENABLE(dl_sndfile, - AS_HELP_STRING([--enable-dl-sndfile], - [Dlopen sndfile instead of linking in.]), - enable_dl_sndfile=$enableval, enable_dl_sndfile=no) -if test "x$tmp_using_sndfile" = "xyes"; then - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_sndfile" = "xyes"; then - AC_DEFINE(DL_LIBSNDFILE, 1, [Define to dlopen() sndfile.]) - dnl When enable_dl_sndfile, do not let SOX_PATH_SNDFILE add libraries - dnl to be linked in (since they will be dlopen()'ed instead). - LIBSNDFILE_LIBS="$ac_sox_save_SNDFILE_LIBS" - else - enable_dl_sndfile="no" - fi -fi -AC_OPTIONAL_FORMAT(sndfile, SNDFILE, [using_sndfile=$tmp_using_sndfile]) - - - -AC_OPTIONAL_FORMAT(oss, OSS, [AC_CHECK_HEADERS(sys/soundcard.h,, using_oss=no)]) - - - -AC_OPTIONAL_FORMAT(sunaudio, SUNAUDIO, [AC_CHECK_HEADERS(sys/audioio.h,, - [AC_CHECK_HEADERS(sun/audioio.h,, using_sunaudio=no)])]) - - - -# MP2/MP3 format depends on libmad || LAME || twolame -AC_OPTIONAL_FORMAT(mp3, MP3, [ - if test "$using_mad" != yes -a "$using_lame" != yes -a "$using_twolame" != yes; then - using_mp3=no - fi]) - - - -# GSM format depends on libgsm -AC_OPTIONAL_FORMAT(gsm, GSM, [using_gsm=$HAVE_LIBGSM]) - - - -# LPC10 format depends on liblpc10 -# No need to check; LPC10 is always found -AC_OPTIONAL_FORMAT(lpc10, LPC10) - - - -dnl Check if we want to disable all symlinks -AC_MSG_CHECKING([whether to enable symlinks]) -AC_ARG_ENABLE(symlinks, - AS_HELP_STRING([--disable-symlinks], [Don't make any symlinks to sox.]),,enable_symlinks=yes) -AC_MSG_RESULT($enable_symlinks) - -if test "$enable_symlinks" = "yes"; then - SYMLINKS=soxi - if test "" \ - -o "$using_alsa" = yes \ - -o "$using_ao" = yes \ - -o "$using_coreaudio" = yes \ - -o "$using_oss" = yes \ - -o "$using_pulseaudio" = yes \ - -o "$using_sndio" = yes \ - -o "$using_sunaudio" = yes \ - -o "$using_waveaudio" = yes \ - ; then - SYMLINKS="$SYMLINKS play rec" - fi -fi -AC_SUBST(SYMLINKS) - -AM_CONDITIONAL(STATIC_LIBSOX_ONLY, test "$enable_shared" = "no" -a "$enable_static" = "yes") +SOX_WITH_LIB([libltdl], [ltdl.h], [ltdl], [lt_dlinit]) + +SOX_WITH([ladspa], [Enable LADSPA plugin support], + [SOX_NEED_DL([${with_ladspa:+dyn}], [--with-ladspa])], + [AC_DEFINE([HAVE_LADSPA_H], [1], [Define if LADSPA support is enabled]) + AS_CASE([$HAVE_LADSPA], [yes], [LADSPA_PATH='${libdir}/ladspa'], + [LADSPA_PATH=$HAVE_LADSPA])], [], [], [*], [$HAVE_LIBLTDL]) +AC_SUBST([LADSPA_PATH]) +SOX_REPORT([other], [LADSPA effect plugins], [$HAVE_LADSPA]) + +dnl Various libraries + +SOX_WITH_LIB([magic], [magic.h], [magic], [magic_open]) +SOX_CHECK_LIB([ZLIB], [zlib.h], [z], [uncompress]) +SOX_WITH_LIB([png], [png.h], [png], [png_set_rows], [], [], [], [$ZLIB_LIBS]) +SOX_WITH_LIB([id3tag], [id3tag.h], [id3tag], [id3_file_open]) +SOX_WITH_LIB([libgsm], [gsm/gsm.h gsm.h], [gsm], [gsm_create]) + +dnl Optional formats + +SOX_ENABLE([formats], [Default setting for optional formats], + [SOX_NEED_DL([$HAVE_FORMATS], [--enable-formats=dyn])], [], [], [], [dyn]) + +SOX_DL_LIB([opencore-amrnb], [opencore-amrnb/interf_dec.h], [opencore-amrnb], + [Decoder_Interface_init]) +SOX_FMT_REQ([amrnb], [OPENCORE_AMRNB]) + +SOX_DL_LIB([opencore-amrwb], [opencore-amrwb/dec_if.h], [opencore-amrwb], + [D_IF_init]) +SOX_DL_LIB([vo-amrwbenc], [vo-amrwbenc/enc_if.h], [vo-amrwbenc], [E_IF_init]) +SOX_FMT_REQ([amrwb], [OPENCORE_AMRWB VO_AMRWBENC]) + +SOX_FMT_PKG([flac], [flac]) +SOX_FMT_REQ([gsm], [LIBGSM]) + +SOX_CHECK_LIB([LIBLPC10], [lpc10.h], [lpc10], [create_lpc10_encoder_state], + [LPC10_LIBS="$LIBLPC10_LIBS"], + [LPC10_LIBS=../lpc10/liblpc10.la; LPC10_CFLAGS='-I${top_srcdir}/lpc10']) +AM_CONDITIONAL([HAVE_LIBLPC10], [test $HAVE_LIBLPC10 = yes]) +SOX_FMT([lpc10]) + +SOX_DL_LIB([mad], [mad.h], [mad], [mad_stream_buffer]) +SOX_DL_LIB([lame], [lame/lame.h lame.h], [mp3lame], [lame_init]) +SOX_DL_LIB([twolame], [twolame.h], [twolame], [twolame_init]) +SOX_FMT_REQ([mp3], [MAD LAME TWOLAME]) +MP3_LIBS="$MP3_LIBS $ID3TAG_LIBS" + +SOX_FMT_PKG([oggvorbis], [ogg vorbis vorbisenc vorbisfile]) +SOX_FMT_PKG([opus], [opusfile]) + +SOX_DL_LIB([libsndfile], [sndfile.h], [sndfile], [sf_open_virtual]) +SOX_FMT_REQ([sndfile], [LIBSNDFILE]) + +SOX_FMT_LIB([wavpack], [wavpack/wavpack.h], [wavpack], [WavpackGetSampleRate]) + +dnl Audio devices + +SOX_FMT_LIB([alsa], [alsa/asoundlib.h], [asound], [snd_pcm_open], [], [], + [devices]) +SOX_FMT_LIB([ao], [ao/ao.h], [ao], [ao_play], [], [], [devices]) +SOX_FMT_LIB([coreaudio], [CoreAudio/CoreAudio.h], [], [AudioDeviceStart], [], + [[-Wl,-framework,CoreAudio]], [devices]) +SOX_FMT_LIB([pulseaudio], [pulse/simple.h], [pulse], [pa_simple_new], [], + [-lpulse-simple], [devices]) +SOX_FMT_HEADERS([oss], [sys/soundcard.h], [SOUND_MIXER_MUTE], [], [devices]) +SOX_FMT_LIB([sndio], [sndio.h], [sndio], [sio_open], [], [], [devices]) +SOX_FMT_HEADERS([sunaudio], [sys/audioio.h sun/audioio.h], + [AUDIO_GETINFO], [], [devices]) +SOX_FMT_LIB([waveaudio], [mmsystem.h], [winmm], [waveOutOpen], [windows.h], [], + [devices]) + +dnl Check if we want to create symlinks +AC_ARG_ENABLE([symlinks], + AS_HELP_STRING([--enable-symlinks], [Create soxi/play/rec links (YES/no)])) +AS_CASE([${enable_symlinks:=yes}], [yes], [ + SYMLINKS=soxi + AS_IF([test -n "$sox_devices"], [SYMLINKS="$SYMLINKS play rec"])]) +AC_SUBST([SYMLINKS]) +SOX_REPORT([build], [symlinks], [${SYMLINKS:-none}]) + +AM_CONDITIONAL(STATIC_LIBSOX_ONLY, test "$enable_shared" = "no") dnl Generate output files. AC_CONFIG_FILES(Makefile src/Makefile lpc10/Makefile sox.pc) AC_OUTPUT -if test "$using_lpc10" != "no"; then - if test "$found_liblpc10" = "yes"; then - lpc10_option="(external)" - else - lpc10_option="(in-tree)" - fi -fi +SOX_REPORT_SECTION([build], [Build options:]) +SOX_REPORT_SECTION([with_libs], [Optional libraries:], [sort]) +SOX_REPORT_SECTION([formats], [Optional formats:], [sort]) +SOX_REPORT_SECTION([devices], [Audio devices:], [sort]) +SOX_REPORT_SECTION([other], [Other options:]) +SOX_REPORT_PRINT -# Report configuration. -echo -echo "BUILD OPTIONS" -echo "Distro name ...............${with_distro:-unspecified}" -echo "Dynamic loading support....$using_libltdl" -echo "Pkg-config location........$pkgconfigdir" -echo "Symlinks enabled...........${SYMLINKS:-no}" -echo -echo "OPTIONAL DEVICE DRIVERS" -echo "ao (Xiph)..................$using_ao" -echo "alsa (Linux)...............$using_alsa" -echo "coreaudio (Mac OS X).......$using_coreaudio" -echo "sndio (OpenBSD)............$using_sndio" -echo "oss........................$using_oss" -echo "pulseaudio.................$using_pulseaudio" -echo "sunaudio...................$using_sunaudio" -echo "waveaudio (MS-Windows).....$using_waveaudio" -echo -echo "OPTIONAL FILE FORMATS" -echo "amrnb......................$using_amrnb" -if test "x$using_amrnb" = "xyes"; then -echo " dlopen amrnb..............${enable_dl_opencore_amrnb:-no}" -fi -echo "amrwb......................$using_amrwb" -if test "x$using_amrwb" = "xyes"; then -echo " dlopen opencore-amrwb.....${enable_dl_opencore_amrwb:-no}" -echo " dlopen vo-amrwbenc........${enable_dl_vo_amrwbenc:-no}" -fi -echo "flac.......................$using_flac" -echo "gsm........................$using_gsm" -echo "lpc10......................$using_lpc10 $lpc10_option" -echo "mp2/mp3....................$using_mp3" -echo " id3tag....................$using_id3tag" -echo " lame......................$using_lame" -if test "x$using_lame" = "xyes"; then -echo " dlopen lame...............$enable_dl_lame" -fi -echo " mad.......................$using_mad" -if test "x$using_mad" = "xyes"; then -echo " dlopen mad................$enable_dl_mad" -fi -echo " twolame...................$using_twolame" -if test "x$using_twolame" = "xyes"; then -echo " dlopen twolame............$enable_dl_twolame" -fi -echo "oggvorbis..................$using_oggvorbis" -echo "opus.......................$using_opus" -echo "sndfile....................$using_sndfile" -if test "x$using_sndfile" = "xyes"; then -echo " dlopen sndfile............$enable_dl_sndfile" -fi -echo "wavpack....................$using_wavpack" -echo -echo "OTHER OPTIONS" -echo "ladspa effects.............$using_ladspa" -echo "magic support..............$using_magic" -echo "png support................$using_png" -if test "x$OPENMP_CFLAGS" = "x"; then -echo "OpenMP support.............no" -else -echo "OpenMP support.............yes, $OPENMP_CFLAGS" -fi echo -echo "Configure finished. Do 'make -s && make install' to compile and install SoX." +echo "Configure finished. Run 'make' to compile SoX." echo diff --git a/m4/optional-fmt.m4 b/m4/optional-fmt.m4 deleted file mode 100644 index d0623c83..00000000 --- a/m4/optional-fmt.m4 +++ /dev/null @@ -1,49 +0,0 @@ -dnl SoX autoconf macro: optional format (c) 2009 ro...@us... -dnl -dnl This program is free software; you can redistribute it and/or modify it -dnl under the terms of the GNU General Public License as published by the -dnl Free Software Foundation; either version 2 of the License, or (at your -dnl option) any later version. -dnl -dnl This program is distributed in the hope that it will be useful, but -dnl WITHOUT ANY WARRANTY; without even the implied warranty of -dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -dnl Public License for more details. -dnl -dnl You should have received a copy of the GNU General Public License along -dnl with this program; if not, write to the Free Software Foundation, Inc., -dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -dnl $1 package name e.g. flac -dnl $2 package name in conditionals e.g. FLAC -dnl $3 using check - -AC_DEFUN([AC_OPTIONAL_FORMAT], - [AC_ARG_WITH($1, AC_HELP_STRING([--with-$1=dyn], [load $1 dynamically])) - using_$1=$with_$1 - if test "_$with_$1" = _dyn; then - if test $using_libltdl != yes; then - AC_MSG_FAILURE([not using libltdl; cannot load $1 dynamically]) - fi - elif test "_$with_$1" = _; then - using_$1=$opt_default - elif test "_$with_$1" != _yes -a "_$with_$1" != _no; then - AC_MSG_FAILURE([invalid selection --with-$1=$with_$1]) - fi - if test _$with_$1 != _no; then - $3 - if test _$with_$1 != _ -a $using_$1 = no; then - AC_MSG_FAILURE([cannot find $1]) - fi - fi - if test "$using_$1" != no; then - AC_DEFINE(HAVE_$2, 1, [Define to 1 if you have $1.]) - if test "$using_$1" = yes; then - AC_DEFINE(STATIC_$2, 1, [Define to 1 if you have static $1.]) - fi - fi - AM_CONDITIONAL(HAVE_$2, test $using_$1 != no) - AM_CONDITIONAL(STATIC_$2, test $using_$1 = yes) - AC_SUBST($2_CFLAGS) - AC_SUBST($2_LIBS)] -) diff --git a/m4/sndfile.m4 b/m4/sndfile.m4 deleted file mode 100644 index 8fc026c9..00000000 --- a/m4/sndfile.m4 +++ /dev/null @@ -1,65 +0,0 @@ -dnl SOX_PATH_SNDFILE -dnl Based off of shout.m4 from xiph package. -dnl cba...@us... 1-3-2007 -dnl -dnl Original Authors: -dnl Jack Moffitt <ja...@ic...> 08-06-2001 -dnl Rewritten for libshout 2 -dnl Brendan Cully <br...@xi...> 20030612 -dnl -# SOX_PATH_SNDFILE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -# Test for libsndfile, and define LIBSNDFILE_CFLAGS and LIBSNDFILE_LIBS -AC_DEFUN([SOX_PATH_SNDFILE], -[dnl -# Step 1: Use pkg-config if available -m4_ifdef([PKG_CHECK_MODULES], - [# PKG_CHECK_MODULES available - PKG_CHECK_MODULES(LIBSNDFILE, sndfile, have_sndfile="maybe", - have_sndfile="no")], - [# Step 2: use pkg-config manually if available - AC_PATH_PROG([PKGCONFIG], [pkg-config], [none]) - if test "$PKGCONFIG" != "none" && `$PKGCONFIG --exists sndfile` - then - LIBSNDFILE_CFLAGS=`$PKGCONFIG --cflags sndfile`" $ac_save_SNDFILE_CFLAGS $LIBSNDFILE_CFLAGS" - LIBSNDFILE_LIBS=`$PKGCONFIG --libs sndfile`" $ac_save_SNDFILE_LIBS $LIBSNDFILE_LIBS" - have_sndfile="maybe" - else - have_sndfile="no" - fi - ]) - -# Step 3: Even if pkg-config says its not installed, user may have -# manually installed libraries with no -kg-config support. -if test "$have_sndfile" = "no" -then - # As a last resort, just hope that header and ilbrary can - # be found in default paths and that it doesn't need - # to link against any other libraries. - LIBSNDFILE_LIBS="-lsndfile $LIBSNDFILE_LIBS" - have_sndfile="maybe" -fi - -# Even if pkg-config or similar told us how to find library, -# do a safety check. -if test "$have_sndfile" != "no" -then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $LIBSNDFILE_CFLAGS" - LIBS="$LIBS $LIBSNDFILE_LIBS" - AC_CHECK_HEADER([sndfile.h], [ - AC_DEFINE([HAVE_SNDFILE_H], 1, [Define if you have <sndfile.h>]) - AC_CHECK_FUNC([sf_open_virtual], [ - ifelse([$1], , :, [$1]) - have_sndfile="yes" - ]) - ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" -fi - -if test "$have_sndfile" != "yes" -then - ifelse([$2], , :, [$2]) -fi -])dnl SOX_PATH_SNDFILE diff --git a/src/Makefile.am b/src/Makefile.am index e0986584..c4cd6c71 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -90,8 +90,8 @@ libsox_la_LDFLAGS = -no-undefined -version-info @SHLIB_VERSION@ \ -export-symbols-regex '^(sox_.*|lsx_(([cm]|re)alloc.*|check_read_params|(close|open)_dllibrary|(debug(_more|_most)?|fail|report|warn)_impl|eof|error|fail_errno|filelength|find_(enum_(text|value)|file_extension)|flush|getopt(_init)?|lpc10_(create_(de|en)coder_state|(de|en)code)|raw(read|write)|read(_b_buf|buf|chars)|rewind|seeki|sigfigs3p?|strcasecmp|strdup|tell|unreadb|write(b|_b_buf|buf|s)))$$' if HAVE_LIBLTDL - libsox_la_CFLAGS += $(LTDLINCL) - libsox_la_LDFLAGS += $(LIBLTDL) + libsox_la_CFLAGS += $(LIBLTDL_CFLAGS) + libsox_la_LIBADD += $(LIBLTDL_LIBS) endif commit b49cdde669d9024efe587e82a128440b7e4374ec Author: Mans Rullgard <ma...@ma...> Date: Tue Aug 11 08:22:53 2020 +0100 build: add useful m4 macros diff --git a/m4/sox.m4 b/m4/sox.m4 new file mode 100644 index 00000000..2437d925 --- /dev/null +++ b/m4/sox.m4 @@ -0,0 +1,287 @@ +dnl +dnl SOX_NAME_TAG(NAME-TAG, [BODY]) +dnl +dnl Define using m4_pushdef: +dnl N First word of NAME-TAG +dnl L N sanitised for use as shell variable +dnl T Second word of NAME-TAG, if present, else +dnl L converted to upper case +dnl +dnl If BODY is provided, substitute it and m4_popdef N, L, and T. +dnl Otherwise, leave these macros defined. +dnl +AC_DEFUN([SOX_NAME_TAG], [ + m4_pushdef([nt], m4_split(m4_normalize($1))) + m4_pushdef([N], m4_car(nt)) + m4_pushdef([L], m4_bpatsubst(N, [[^0-9A-Za-z]], [_])) + m4_pushdef([T], m4_default(m4_argn([2], nt), m4_toupper(L))) + m4_popdef([nt]) + m4_ifnblank([$2], [$2 m4_popdef([N], [L], [T])]) +]) + +dnl +dnl SOX_INCLUDE(HEADER) +dnl +dnl Expands to "#include <HEADER>" followed by a newline. +dnl +AC_DEFUN([SOX_INCLUDE], [[#include <]]$1[[> +]]) + +dnl +dnl SOX_CHECK_HEADERS(HEADERS, [DECL], [IF-FOUND], [IF-NOT-FOUND], +dnl [EXTRA-HEADERS]) +dnl +dnl Check for presence of headers. +dnl +dnl HEADERS List of headers to try, stopping when one is found +dnl DECL Optional symbol to check for +dnl IF-FOUND Action to take if one of HEADERS is found +dnl IF-NOT-FOUND Action to take if none of HEADERS are found +dnl EXTRA-HEADERS Additional headers to #include +dnl +dnl Outputs: +dnl HAVE_HEADER: Set with AC_DEFINE to 1 for the first header found +dnl +AC_DEFUN([SOX_CHECK_HEADERS], [ + sox_ch_found=no + AC_CHECK_HEADERS([$1], [sox_ch_found=$ac_header; break], [], + [m4_map([SOX_INCLUDE], m4_split([$5]))]) + AS_CASE([$sox_ch_found], [no], [$4], [m4_ifblank([$2], [$3], + [AC_CHECK_DECL([$2], [$3], [$4], [SOX_INCLUDE([$sox_ch_found])])])]) +]) + +dnl +dnl SOX_CHECK_LIB(TAG, HEADERS, LIB, FUNC, [IF-FOUND], [IF-NOT-FOUND], +dnl [EXTRA-HEADERS], [EXTRA-LIBS]) +dnl +dnl Check for presence of headers and library. +dnl +dnl Arguments: +dnl TAG Prefix/suffix for output variable +dnl HEADERS List of headers searched with SOX_CHECK_HEADERS +dnl LIB Name of library to check +dnl FUNC Name of function in library +dnl IF-FOUND Action to take on success +dnl IF-NOT-FOUND Action to take on failure +dnl EXTRA-HEADERS Passed to SOX_CHECK_HEADERS +dnl EXTRA-LIBS Additional libraries (-lLIB) and linker flags +dnl +dnl Outputs: +dnl HAVE_TAG AC_DEFINE to 1 if found +dnl Set shell variable to 'yes' on success, 'no' otherwise +dnl TAG_LIBS Add '-lLIB EXTRA-LIBS' to start of shell variable +dnl +AC_DEFUN([SOX_CHECK_LIB], [ + m4_pushdef([lib], [m4_default([$3], [c])]) + m4_pushdef([flags], [m4_ifnblank([$3], [-l$3 $8], [$8])]) + HAVE_[]$1=no + SOX_CHECK_HEADERS([$2], [], [AC_CHECK_LIB(lib, [$4], + [HAVE_[]$1=yes], [], [$8 $$1[]_LIBS])], [], [$7]) + AS_CASE([$HAVE_[]$1], [yes], [ + AC_DEFINE([HAVE_]$1, [1], [Define if $4 exists in ]flags) + $1[]_LIBS="flags $$1[]_LIBS" + $5], [$6]) + AC_SUBST($1[_CFLAGS]) + AC_SUBST($1[_LIBS]) + m4_popdef([lib], [flags]) +]) + +dnl +dnl SOX_NEED_DL(VAL, DEP) +dnl +dnl Exit with an error message if VAL equals 'dyn' and dynamic loading +dnl is not available. +dnl +AC_DEFUN([SOX_NEED_DL], [ + AS_CASE([$1-$HAVE_LIBLTDL], [dyn-no], + [AC_MSG_ERROR([dynamic loading not available, needed by $2])]) +]) + +dnl +dnl SOX_ARG(TYPE, NAME, DESC, [TEST], [IF-YES], [IF-NO], [IF-FAIL], +dnl [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_ARG], [SOX_NAME_TAG([$2], [ + m4_pushdef([ATU], m4_toupper($1)) + m4_pushdef([ATL], m4_tolower($1)) + m4_pushdef([optdef], m4_default([$9], [yes])) + m4_pushdef([opts], m4_split([yes no $8])) + m4_pushdef([opts_help], m4_bpatsubst(m4_apply([m4_join], [[/], opts]), + \<optdef\>, m4_toupper(optdef))) + m4_pushdef([opts_sh], m4_apply([m4_join], [[|], opts])) + m4_indir(AC_ARG_[]ATU, [N], AS_HELP_STRING([--ATL-N], [$3 (opts_help)])) + HAVE_[]T=${ATL[]_[]L:-optdef} + AS_CASE([$HAVE_[]T], + [no], [], + [opts_sh], [$4], + [AC_MSG_ERROR([invalid value for --ATL-N])]) + AS_CASE([$ATL[]_[]L-$HAVE_[]T], + [no-*|-no], [$6], + [*-no], [$7], + [$5]) + AM_CONDITIONAL([HAVE_]T, [test $HAVE_[]T != no]) + m4_popdef([ATU], [ATL], [optdef], [opts], [opts_help], [opts_sh]) +])]) + +dnl +dnl SOX_ENABLE(NAME, DESC, [TEST], [IF-YES], [IF-NO], [IF-FAIL], +dnl [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_ENABLE], [ + SOX_ARG([enable], $@) +]) + +dnl +dnl SOX_WITH(NAME, DESC, [TEST], [IF-YES], [IF-NO], [IF-FAIL], +dnl [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_WITH], [ + SOX_ARG([with], $@) +]) + +dnl +dnl SOX_WITH_LIB(NAME, HEADERS, LIB, FUNC, [IF-FOUND], [IF-NOT-FOUND], +dnl [INCLUDES], [EXTRA-LIBS], [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_WITH_LIB], [SOX_NAME_TAG([$1], [ + SOX_WITH([$1], [Use N], + [AS_CASE([$HAVE_[]T], [yes|dyn], [sox_wl=$3], [sox_wl=$HAVE_[]T]) + SOX_CHECK_LIB([T], [$2], [$sox_wl], [$4], [], [], [$7], [$8])], + [$5], [$6], [AC_MSG_FAILURE([N not found])], + [$9 *], m4_argn([8], m4_shift2($@))) dnl BSD m4 can't count to 10 + SOX_REPORT([with_libs], [N], [$HAVE_]T) +])]) + +dnl +dnl SOX_DL_LIB(NAME, HEADERS, LIB, FUNC, [IF-STATIC], [IF-DL], [IF-NOT-FOUND], +dnl [EXTRA-HEADERS], [EXTRA-LIBS]) +dnl +AC_DEFUN([SOX_DL_LIB], [SOX_NAME_TAG([$1], [ + SOX_NEED_DL([$with_[]L], [--with-L=dyn]) + SOX_WITH_LIB([$1], [$2], [$3], [$4], [], [$7], [$8], [$9], [dyn]) + AS_CASE([$with_[]L-$HAVE_[]T], + [dyn-*], [AC_DEFINE([DL_]T, 1, [Define to dlopen() ]N) + HAVE_[]T=dyn; $6], + [*-yes], [$5]) +])]) + +dnl +dnl SOX_REQUIRE1(FEATURE, TAG, [IF-FOUND]) +dnl +AC_DEFUN([SOX_REQUIRE1], [ + AS_CASE([$HAVE_$1], + [yes|dyn], [$2_CFLAGS="$$2_CFLAGS $$1_CFLAGS"; $3]) + AS_CASE([$HAVE_$1], + [yes], [$2_LIBS="$$2_LIBS $$1_LIBS"]) +]) + +dnl +dnl SOX_REQUIRE(FEATURES, TAG, [IF-NOT-FOUND]) +dnl +AC_DEFUN([SOX_REQUIRE], [ + sox_req_found=no + m4_map_args_w([$1], [SOX_REQUIRE1(], [, $2, [sox_req_found=yes])]) + AS_CASE([$sox_req_found], [yes], [], [$3]) +]) + +dnl +dnl SOX_FMT(NAME, [TEST], [SECTION]) +dnl +dnl Add an optional format with corresponding --enable flag. +dnl +dnl Arguments: +dnl NAME Name of format, passed to SOX_NAME_TAG setting N and T +dnl TEST Test for prerequisites, must set HAVE_T to 'no' if not met +dnl SECTION Section format belongs to, default 'formats' +dnl +dnl Outputs: +dnl HAVE_T Set shell variable to 'yes', 'no', or 'dyn' +dnl AC_DEFINE and AM_CONDITIONAL true if not 'no' +dnl STATIC_T AC_DEFINE and AM_CONDITIONAL true if HAVE_T = 'yes' +dnl +AC_DEFUN([SOX_FMT], [SOX_NAME_TAG([$1], [ + m4_pushdef([section], m4_default([$3], [formats])) + SOX_NEED_DL([$with_[]L], [--enable-L=dyn]) + SOX_ENABLE([$1], [Enable N], [$2], + [AC_DEFINE([HAVE_]T, [1], [Define if ]N[ is enabled]) + sox_[]section="$sox_[]section L"], [], + [AC_MSG_FAILURE([N not available])], + [dyn], [${HAVE_FORMATS:-yes}]) + AS_CASE([$HAVE_[]T], + [yes], [AC_DEFINE([STATIC_]T, [1], [Define if ]N[ is linked in])]) + AC_SUBST(T[_CFLAGS]) + AC_SUBST(T[_LIBS]) + AM_CONDITIONAL([STATIC_]T, [test $HAVE_[]T = yes]) + SOX_REPORT(section, [N], [$HAVE_]T) + m4_popdef([section]... [truncated message content] |
From: Mans R. <ma...@us...> - 2020-08-27 17:41:54
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, master has been updated via 784021f41f97a65471d961d39474c85ba00318de (commit) from a030e6958fdafd28a65dcc563981b378aaf87c09 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 784021f41f97a65471d961d39474c85ba00318de Author: Mans Rullgard <ma...@ma...> Date: Thu Aug 27 13:04:25 2020 +0100 sunaudio: fix input buffer overrun The write loop should use the remaining input size, not the initial value. diff --git a/src/sunaudio.c b/src/sunaudio.c index 05a51639..c7cad102 100644 --- a/src/sunaudio.c +++ b/src/sunaudio.c @@ -443,7 +443,7 @@ static size_t sunwrite( size_t cbStride; int cbWritten; - cStride = cInput; + cStride = cInputRemaining; if (cStride > pPriv->cOutput) { cStride = pPriv->cOutput; } ----------------------------------------------------------------------- Summary of changes: src/sunaudio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- sox |
From: Mans R. <ma...@us...> - 2020-08-27 15:11:11
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, new-build has been updated via 7b91e81423a132b732cc8c8322fb086b8d6b232b (commit) from 6026bfd68cdf1f99650e8c3abe1d411394c7a66b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 7b91e81423a132b732cc8c8322fb086b8d6b232b Author: Mans Rullgard <ma...@ma...> Date: Thu Aug 27 15:46:45 2020 +0100 build: update libtool patch diff --git a/configure.ac b/configure.ac index fd192b3f..71003aa2 100644 --- a/configure.ac +++ b/configure.ac @@ -157,11 +157,12 @@ AC_OUTPUT dnl Patch the libtool script to fix linking on OpenBSD. When linking dnl with the newly built libsox, the -L flag indicating its location dnl must precede any other -L flags. Otherwise an older installed -dnl libsox may be picked instead. -patch -s <<'EOF' +dnl libsox may be picked instead. Only on of hunks 3 and 4 is +dnl expected to apply. Which one depends on the libtool version. +patch -f -s >/dev/null <<'EOF' --- libtool~ +++ libtool -@@ -10788,6 +10788,7 @@ +@@ -9122,6 +9122,7 @@ # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= @@ -169,14 +170,23 @@ patch -s <<'EOF' for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; -@@ -10801,6 +10802,7 @@ +@@ -9135,6 +9136,7 @@ done for deplib in $compile_deplibs; do case $deplib in -+ -L.*) func_append pri_libs " $deplib" ;; ++ -L.*) pri_libs="$pri_libs $deplib" ;; -L*) case " $new_libs " in *" $deplib "*) ;; +@@ -9144,7 +9146,7 @@ + *) new_libs="$new_libs $deplib" ;; + esac + done +- compile_deplibs="$new_libs" ++ compile_deplibs="$pri_libs $new_libs" + + + compile_command="$compile_command $compile_deplibs" @@ -10810,7 +10812,7 @@ *) func_append new_libs " $deplib" ;; esac ----------------------------------------------------------------------- Summary of changes: configure.ac | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) hooks/post-receive -- sox |
From: Mans R. <ma...@us...> - 2020-08-27 12:42:10
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, new-build has been updated via 6026bfd68cdf1f99650e8c3abe1d411394c7a66b (commit) from 3ff11802d0b5974ebe6065e551b8f7a05926aa7f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 6026bfd68cdf1f99650e8c3abe1d411394c7a66b Author: Mans Rullgard <ma...@ma...> Date: Thu Aug 27 13:04:25 2020 +0100 sunaudio: fix input buffer overrun The write loop should use the remaining input size, not the initial value. diff --git a/src/sunaudio.c b/src/sunaudio.c index 05a51639..c7cad102 100644 --- a/src/sunaudio.c +++ b/src/sunaudio.c @@ -443,7 +443,7 @@ static size_t sunwrite( size_t cbStride; int cbWritten; - cStride = cInput; + cStride = cInputRemaining; if (cStride > pPriv->cOutput) { cStride = pPriv->cOutput; } ----------------------------------------------------------------------- Summary of changes: src/sunaudio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- sox |
From: Mans R. <ma...@us...> - 2020-08-27 11:34:27
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, new-build has been updated via 3ff11802d0b5974ebe6065e551b8f7a05926aa7f (commit) from a767e61f3dbb60fbbb5626c74c56507483aac247 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 3ff11802d0b5974ebe6065e551b8f7a05926aa7f Author: Mans Rullgard <ma...@ma...> Date: Thu Aug 27 12:34:13 2020 +0100 build: patch libtool to fix breakage on OpenBSD diff --git a/configure.ac b/configure.ac index 146d0d55..fd192b3f 100644 --- a/configure.ac +++ b/configure.ac @@ -154,6 +154,40 @@ dnl Generate output files. AC_CONFIG_FILES(Makefile src/Makefile lpc10/Makefile sox.pc) AC_OUTPUT +dnl Patch the libtool script to fix linking on OpenBSD. When linking +dnl with the newly built libsox, the -L flag indicating its location +dnl must precede any other -L flags. Otherwise an older installed +dnl libsox may be picked instead. +patch -s <<'EOF' +--- libtool~ ++++ libtool +@@ -10788,6 +10788,7 @@ + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= ++ pri_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; +@@ -10801,6 +10802,7 @@ + done + for deplib in $compile_deplibs; do + case $deplib in ++ -L.*) func_append pri_libs " $deplib" ;; + -L*) + case " $new_libs " in + *" $deplib "*) ;; +@@ -10810,7 +10812,7 @@ + *) func_append new_libs " $deplib" ;; + esac + done +- compile_deplibs=$new_libs ++ compile_deplibs="$pri_libs $new_libs" + + + func_append compile_command " $compile_deplibs" +EOF + SOX_REPORT_SECTION([build], [Build options:]) SOX_REPORT_SECTION([with_libs], [Optional libraries:], [sort]) SOX_REPORT_SECTION([formats], [Optional formats:], [sort]) ----------------------------------------------------------------------- Summary of changes: configure.ac | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) hooks/post-receive -- sox |
From: Mans R. <ma...@us...> - 2020-08-27 09:52:41
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, new-build has been updated discards 4249900fed6e61c719b5a0745be2b4509d13cd25 (commit) discards 60d171738dc362f0ff235a8099f7947060f29fe3 (commit) discards dbcc22a9f183886dc1c1ec39ae06ac85adf01556 (commit) discards d60d6abf93ade7a51eedc91c7d0717e8318d7a26 (commit) discards ab4e09e53b99e2574b31c90ca43de7db8a348c32 (commit) discards 93e249635fa35238c78c753b79ca189278c2cb26 (commit) discards 3187d953c541a8094eec8040177d7cfcb1601749 (commit) discards 49af469bbd5e1eeb16d9b01c472dec1a197ff7ac (commit) discards 6ce1fdf3a9a345f143595971217543ad2c3009c4 (commit) discards b5bf6b8b7abc640f4f4e86be8b322a1dae64954a (commit) discards f0443b0dc028117cb32bce7f56aea796bdce83ca (commit) discards 4984cf47c889c3bbc9d71ea9b75bd0cc5c38ab89 (commit) discards 996071bf5cade3b70cfc3388e82b9339e33cab3b (commit) discards 66b9ff70284ee5e7f275ac729db4d5e695bc6fc5 (commit) discards fdbbe3170698810a913453d3864214959b3c27ab (commit) discards 8b34471f2b7042d14f74c82807cc420d2e44dbbf (commit) discards 2e67e7a28cabf5d74e9eaaa940c883e84b3e95ab (commit) discards 2770d3cb7b6698de1ea60d50a520f6c2af6a199e (commit) discards 1ef6e6f8c15343c139464eefa017b9a1165d28e2 (commit) discards 42d8e6d44b234a791b2cd3bd80d84541e534c906 (commit) discards e4d99709e9b95a28084eac04ec986ed7e968ea85 (commit) discards f9fc5e4ebf32f8466d345f3a715c0c46c4437f33 (commit) discards 0599667322e1b6ca5ba7b5a34b4e19490eedbbce (commit) discards 1ed3a0a05b44bc31d90533b2bf412d669ac274fd (commit) discards 372ab7073fcc4b34f41dc212f789b4043c493362 (commit) discards db9c789549c698679bd1069773d51915fa803249 (commit) discards bb27004804a1dbb97d649b5b2567153581f2d4d3 (commit) discards 1560707b4580c9f4efa22a9e39c85e03415410b5 (commit) discards 458b58a3daa6d2b13e97839c853526f55a862fb3 (commit) discards 204d7adaee9b4a78accfb3ce23fbad937fa0d4c8 (commit) via a767e61f3dbb60fbbb5626c74c56507483aac247 (commit) via f5faacdf6086e20402cdf83fc27a2b6321bf6bca (commit) via 48eea35c54edb0f6a864f41a06e7afd6481a9dc1 (commit) via 79b2f228c1eb4c7019ab5aec1c1752a3d9cbcf98 (commit) via 50e65e2018cb3e6076dcfefafcfd6de5ec4c3a93 (commit) via 944f549b9cfe32fe98abd6958296780ba6661f79 (commit) via 7da55e89e98389838420e7c267d9cd7534f29d38 (commit) via ad8dea54f724df41bc1da61571452c318bc78f07 (commit) via aca2e31a2ee56b125a582c252efc26348ae4152b (commit) via ba547c619638b39fe95d2183765cc3d37df794a6 (commit) via 888ce48bf887c740b67d12617aa58fe9e98d1f82 (commit) via ed8b26878acc3ccb78ccd0fed02a5f1e17f30e43 (commit) via 93c9ced5623942df915ec1db18e46b41b9968514 (commit) via ba503af0b34fb5b63d884c10d0afba252a7d462c (commit) via 9b5f48c105b116297eb678b7107749db1b862472 (commit) via 5105435069307783fb84e1a5ed20a3a942bb6cec (commit) via f02e4715777431bf688dc1876e2aef865d528c9c (commit) via 523bbb807cf5b830100c2d01f09c9d7b0a451f35 (commit) via f0acf3f1455abf9aabe439517317fa5156c00069 (commit) via dc391ef2d37a56b502c18359f18df72451ff715c (commit) via e6e16c79a2330665b7072dcb1bb94e2b168c638b (commit) via d1f891904fc04ad2be6da11f8b18a77aa40c7152 (commit) via 08f5607770e6e3d4fdc4f7b4aaa2cec9e542a3ee (commit) via fdea6b59f799f5237fbe01a90ebc2bf418503107 (commit) via 25a0a14e23abed549de86c045cd948afbace4c37 (commit) via 7413ba1eae3c16e76f39361ef9e9238dc445b957 (commit) via a9676bb5a8914621dc03c7d97b1aad098b547c7d (commit) via 3f37546c939c38fa734cc6ad6ccd8e68f3d973fc (commit) via 28ffa1c360bee946952d9715c7b0250f007d6a52 (commit) via 73e2e8af1a92b316dc6bc674d6cfa4ec0415f317 (commit) via a030e6958fdafd28a65dcc563981b378aaf87c09 (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (4249900fed6e61c719b5a0745be2b4509d13cd25) \ N -- N -- N (a767e61f3dbb60fbbb5626c74c56507483aac247) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit a767e61f3dbb60fbbb5626c74c56507483aac247 Author: Mans Rullgard <ma...@ma...> Date: Wed Aug 26 15:30:27 2020 +0100 build: do not link format modules against libsox The format modules should use symbols from the host process. Linking them against libsox can result in additional copies thereof being loaded with unpredictable results. Platforms that disallow unresolved symbols in shared libraries cannot support this feature. diff --git a/src/optional-fmts.am b/src/optional-fmts.am index 50bce818..098e76c6 100644 --- a/src/optional-fmts.am +++ b/src/optional-fmts.am @@ -10,7 +10,7 @@ else endif else libsox_fmt_alsa_la_SOURCES = alsa.c - libsox_fmt_alsa_la_LIBADD = libsox.la @ALSA_LIBS@ + libsox_fmt_alsa_la_LIBADD = @ALSA_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_alsa.la endif endif @@ -25,7 +25,7 @@ else endif else libsox_fmt_amr_nb_la_SOURCES = amr-nb.c amr.h - libsox_fmt_amr_nb_la_LIBADD = libsox.la @AMRNB_LIBS@ + libsox_fmt_amr_nb_la_LIBADD = @AMRNB_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_amr_nb.la endif endif @@ -40,7 +40,7 @@ else endif else libsox_fmt_amr_wb_la_SOURCES = amr-wb.c amr.h - libsox_fmt_amr_wb_la_LIBADD = libsox.la @AMRWB_LIBS@ + libsox_fmt_amr_wb_la_LIBADD = @AMRWB_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_amr_wb.la endif endif @@ -55,7 +55,7 @@ else endif else libsox_fmt_ao_la_SOURCES = ao.c - libsox_fmt_ao_la_LIBADD = libsox.la @AO_LIBS@ + libsox_fmt_ao_la_LIBADD = @AO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_ao.la endif endif @@ -70,7 +70,7 @@ else endif else libsox_fmt_coreaudio_la_SOURCES = coreaudio.c - libsox_fmt_coreaudio_la_LIBADD = libsox.la @COREAUDIO_LIBS@ + libsox_fmt_coreaudio_la_LIBADD = @COREAUDIO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_coreaudio.la endif endif @@ -85,7 +85,7 @@ else endif else libsox_fmt_flac_la_SOURCES = flac.c - libsox_fmt_flac_la_LIBADD = libsox.la @FLAC_LIBS@ + libsox_fmt_flac_la_LIBADD = @FLAC_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_flac.la endif endif @@ -100,7 +100,7 @@ else endif else libsox_fmt_gsm_la_SOURCES = gsm.c - libsox_fmt_gsm_la_LIBADD = libsox.la @LIBGSM_LIBS@ + libsox_fmt_gsm_la_LIBADD = @LIBGSM_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_gsm.la endif endif @@ -117,7 +117,7 @@ endif else libsox_fmt_lpc10_la_SOURCES = lpc10.c libsox_fmt_lpc10_la_CFLAGS = @LPC10_CFLAGS@ - libsox_fmt_lpc10_la_LIBADD = libsox.la @LPC10_LIBS@ + libsox_fmt_lpc10_la_LIBADD = @LPC10_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_lpc10.la endif endif @@ -132,7 +132,7 @@ else endif else libsox_fmt_mp3_la_SOURCES = mp3.c mp3-util.h - libsox_fmt_mp3_la_LIBADD = libsox.la @MP3_LIBS@ + libsox_fmt_mp3_la_LIBADD = @MP3_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_mp3.la endif endif @@ -149,7 +149,7 @@ endif else libsox_fmt_opus_la_SOURCES = opus.c libsox_fmt_opus_la_CFLAGS = @OPUS_CFLAGS@ - libsox_fmt_opus_la_LIBADD = libsox.la @OPUS_LIBS@ + libsox_fmt_opus_la_LIBADD = @OPUS_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_opus.la endif endif @@ -159,7 +159,6 @@ if STATIC_OSS libsox_la_SOURCES += oss.c else libsox_fmt_oss_la_SOURCES = oss.c - libsox_fmt_oss_la_LIBADD = libsox.la pkglib_LTLIBRARIES += libsox_fmt_oss.la endif endif @@ -174,7 +173,7 @@ else endif else libsox_fmt_pulseaudio_la_SOURCES = pulseaudio.c - libsox_fmt_pulseaudio_la_LIBADD = libsox.la @PULSEAUDIO_LIBS@ + libsox_fmt_pulseaudio_la_LIBADD = @PULSEAUDIO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_pulseaudio.la endif endif @@ -189,7 +188,7 @@ else endif else libsox_fmt_waveaudio_la_SOURCES = waveaudio.c - libsox_fmt_waveaudio_la_LIBADD = libsox.la @WAVEAUDIO_LIBS@ + libsox_fmt_waveaudio_la_LIBADD = @WAVEAUDIO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_waveaudio.la endif endif @@ -205,7 +204,7 @@ else endif else libsox_fmt_sndio_la_SOURCES = sndio.c - libsox_fmt_sndio_la_LIBADD = libsox.la @SNDIO_LIBS@ + libsox_fmt_sndio_la_LIBADD = @SNDIO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_sndio.la endif endif @@ -215,7 +214,6 @@ if STATIC_SUNAUDIO libsox_la_SOURCES += sunaudio.c else libsox_fmt_sunau_la_SOURCES = sunaudio.c - libsox_fmt_sunau_la_LIBADD = libsox.la pkglib_LTLIBRARIES += libsox_fmt_sunau.la endif endif @@ -230,7 +228,7 @@ else endif else libsox_fmt_vorbis_la_SOURCES = vorbis.c - libsox_fmt_vorbis_la_LIBADD = libsox.la @OGGVORBIS_LIBS@ + libsox_fmt_vorbis_la_LIBADD = @OGGVORBIS_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_vorbis.la endif endif @@ -245,7 +243,7 @@ else endif else libsox_fmt_wavpack_la_SOURCES = wavpack.c - libsox_fmt_wavpack_la_LIBADD = libsox.la @WAVPACK_LIBS@ + libsox_fmt_wavpack_la_LIBADD = @WAVPACK_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_wavpack.la endif endif @@ -263,34 +261,34 @@ endif else libsox_fmt_sndfile_la_SOURCES = sndfile.c libsox_fmt_sndfile_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_sndfile_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_sndfile_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_caf_la_SOURCES = caf.c sndfile.c libsox_fmt_caf_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_caf_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_caf_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_mat4_la_SOURCES = mat4.c sndfile.c libsox_fmt_mat4_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_mat4_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_mat4_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_mat5_la_SOURCES = mat5.c sndfile.c libsox_fmt_mat5_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_mat5_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_mat5_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_paf_la_SOURCES = paf.c sndfile.c libsox_fmt_paf_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_paf_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_paf_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_fap_la_SOURCES = fap.c sndfile.c libsox_fmt_fap_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_fap_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_fap_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_w64_la_SOURCES = w64.c sndfile.c libsox_fmt_w64_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_w64_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_w64_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_xi_la_SOURCES = xi.c sndfile.c libsox_fmt_wi_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_xi_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_xi_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_pvf_la_SOURCES = pvf.c sndfile.c libsox_fmt_pvf_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_pvf_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_pvf_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_sd2_la_SOURCES = sd2.c sndfile.c libsox_fmt_sd2_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_sd2_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_sd2_la_LIBADD = @LIBSNDFILE_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_sndfile.la libsox_fmt_caf.la libsox_fmt_mat4.la libsox_fmt_mat5.la libsox_fmt_paf.la libsox_fmt_fap.la libsox_fmt_w64.la libsox_fmt_xi.la libsox_fmt_pvf.la libsox_fmt_sd2.la endif endif commit f5faacdf6086e20402cdf83fc27a2b6321bf6bca Author: Mans Rullgard <ma...@ma...> Date: Tue Aug 25 19:48:07 2020 +0100 build: replace exported symbols regex with a list Replace the hideous exported symbols regex with a simple list. The regex is completely unreadable and causes build errors on Solaris. diff --git a/src/Makefile.am b/src/Makefile.am index c4cd6c71..f30402fd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -87,7 +87,9 @@ endif libsox_la_CFLAGS = libsox_la_LDFLAGS = -no-undefined -version-info @SHLIB_VERSION@ \ - -export-symbols-regex '^(sox_.*|lsx_(([cm]|re)alloc.*|check_read_params|(close|open)_dllibrary|(debug(_more|_most)?|fail|report|warn)_impl|eof|error|fail_errno|filelength|find_(enum_(text|value)|file_extension)|flush|getopt(_init)?|lpc10_(create_(de|en)coder_state|(de|en)code)|raw(read|write)|read(_b_buf|buf|chars)|rewind|seeki|sigfigs3p?|strcasecmp|strdup|tell|unreadb|write(b|_b_buf|buf|s)))$$' + -export-symbols $(srcdir)/libsox.sym + +EXTRA_libsox_la_DEPENDENCIES = $(srcdir)/libsox.sym if HAVE_LIBLTDL libsox_la_CFLAGS += $(LIBLTDL_CFLAGS) diff --git a/src/libsox.sym b/src/libsox.sym new file mode 100644 index 00000000..8e217083 --- /dev/null +++ b/src/libsox.sym @@ -0,0 +1,95 @@ +lsx_calloc +lsx_check_read_params +lsx_close_dllibrary +lsx_debug_impl +lsx_debug_more_impl +lsx_debug_most_impl +lsx_eof +lsx_error +lsx_fail_errno +lsx_fail_impl +lsx_filelength +lsx_find_enum_text +lsx_find_enum_value +lsx_find_file_extension +lsx_flush +lsx_getopt +lsx_getopt_init +lsx_lpc10_create_decoder_state +lsx_lpc10_create_encoder_state +lsx_lpc10_decode +lsx_lpc10_encode +lsx_malloc +lsx_open_dllibrary +lsx_rawread +lsx_rawwrite +lsx_read_b_buf +lsx_readbuf +lsx_readchars +lsx_realloc +lsx_realloc_array +lsx_report_impl +lsx_rewind +lsx_seeki +lsx_sigfigs3 +lsx_sigfigs3p +lsx_strcasecmp +lsx_strdup +lsx_tell +lsx_unreadb +lsx_warn_impl +lsx_write_b_buf +lsx_writeb +lsx_writebuf +lsx_writes +sox_add_effect +sox_append_comment +sox_append_comments +sox_basename +sox_close +sox_copy_comments +sox_create_effect +sox_create_effects_chain +sox_delete_comments +sox_delete_effect +sox_delete_effect_last +sox_delete_effects +sox_delete_effects_chain +sox_effect_options +sox_effects_clips +sox_find_comment +sox_find_effect +sox_find_format +sox_flow_effects +sox_format_init +sox_format_quit +sox_format_supports_encoding +sox_get_effect_fns +sox_get_effects_globals +sox_get_encodings_info +sox_get_format_fns +sox_get_globals +sox_init +sox_init_encodinginfo +sox_is_playlist +sox_num_comments +sox_open_mem_read +sox_open_mem_write +sox_open_memstream_write +sox_open_read +sox_open_write +sox_parse_playlist +sox_pop_effect_last +sox_precision +sox_push_effect_last +sox_quit +sox_read +sox_seek +sox_stop_effect +sox_strerror +sox_trim_clear_start +sox_trim_get_start +sox_version +sox_version_info +sox_write +sox_write_handler commit 48eea35c54edb0f6a864f41a06e7afd6481a9dc1 Author: Mans Rullgard <ma...@ma...> Date: Wed Aug 26 13:14:44 2020 +0100 sox: remove interactive volume control The interactive volume control feature is broken (SIGSEGV) with sunaudio output, and with OSS there is nothing to ensure it is operating on the correct device. Remove the feature and let the rare systems using these drivers cope without it just like all the others. Fixes build on NetBSD. diff --git a/sox.1 b/sox.1 index 4cdab5a5..8aa2b371 100644 --- a/sox.1 +++ b/sox.1 @@ -325,12 +325,6 @@ c8 c8 c. .TE .DT .SP -On some systems, SoX allows audio playback volume to be adjusted whilst -using -.BR play . -Where supported, this is achieved by tapping the `v' & `V' keys during -playback. -.SP To help with setting a suitable recording level, SoX includes a peak-level meter which can be invoked (before making the actual recording) as follows: .EX diff --git a/src/sox.c b/src/sox.c index 03f9571a..9e59a60d 100644 --- a/src/sox.c +++ b/src/sox.c @@ -45,26 +45,6 @@ #include <io.h> #endif -#ifdef HAVE_SUN_AUDIOIO_H - #include <sun/audioio.h> - #define HAVE_AUDIOIO_H 1 -#else -#ifdef HAVE_SYS_AUDIOIO_H - #include <sys/audioio.h> - #define HAVE_AUDIOIO_H 1 -#endif -#endif - -#ifdef HAVE_SYS_SOUNDCARD_H - #include <sys/soundcard.h> - #define HAVE_SOUNDCARD_H 1 -#else -#ifdef HAVE_MACHINE_SOUNDCARD_H - #include <machine/soundcard.h> - #define HAVE_SOUNDCARD_H 1 -#endif -#endif - #ifdef HAVE_SYS_TIME_H #include <sys/time.h> #endif @@ -1305,63 +1285,15 @@ static int kbhit(void) #define kbhit() 0 #endif -#ifdef HAVE_SOUNDCARD_H -#include <sys/ioctl.h> -static void adjust_volume(int delta) -{ - char * from_env = getenv("MIXERDEV"); - int vol1 = 0, vol2 = 0, fd = open(from_env? from_env : "/dev/mixer", O_RDWR); - if (fd >= 0) { - if (ioctl(fd, MIXER_READ(SOUND_MIXER_PCM), &vol1) != -1) { - int side1 = vol1 & 0xff, side2 = (vol1 >> 8) & 0xff; - delta = delta < 0? max(delta, -min(side1, side2)) : - min(delta, 100 - max(side1, side2)); - vol2 = ((side2 + delta) << 8) + side1 + delta; - lsx_debug("%04x %04x", vol1, vol2); - if (vol1 != vol2 && ioctl(fd, MIXER_WRITE(SOUND_MIXER_PCM), &vol2) < 0) - vol2 = vol1; - } - close(fd); - } - if (vol1 == vol2) - putc('\a', stderr); -} -#elif defined(HAVE_AUDIOIO_H) -static void adjust_volume(int delta) -{ - int vol1 = 0, vol2 = 0, fd = fileno((FILE*)ofile->ft->fp); - if (fd >= 0) { - audio_info_t audio_info; - if (ioctl(fd, AUDIO_GETINFO, &audio_info) >= 0) { - vol1 = (audio_info.play.gain * 100 + (AUDIO_MAX_GAIN >> 1)) / AUDIO_MAX_GAIN; - vol2 = range_limit(vol1 + delta, 0, 100); - AUDIO_INITINFO(&audio_info); - audio_info.play.gain = (vol2 * AUDIO_MAX_GAIN + 50) / 100; - audio_info.output_muted = 0; - lsx_debug("%04x %04x", vol1, vol2); - if (vol1 != vol2 && ioctl(fd, AUDIO_SETINFO, &audio_info) < 0) - vol2 = vol1; - } - } - if (vol1 == vol2) - putc('\a', stderr); -} -#else -static void adjust_volume(int delta) -{ - (void)delta; - putc('\a', stderr); -} -#endif - static int update_status(sox_bool all_done, void * client_data) { (void)client_data; if (interactive) while (kbhit()) { + int LSX_UNUSED ch; #ifdef HAVE_CONIO_H - int ch = _getch(); + ch = _getch(); #else - int ch = getchar(); + ch = getchar(); #endif #ifdef MORE_INTERACTIVE @@ -1401,10 +1333,6 @@ static int update_status(sox_bool all_done, void * client_data) user_restart_eff = sox_true; } #endif - switch (ch) { - case 'V': adjust_volume(+7); break; - case 'v': adjust_volume(-7); break; - } } display_status(all_done || user_abort); commit 79b2f228c1eb4c7019ab5aec1c1752a3d9cbcf98 Author: Mans Rullgard <ma...@ma...> Date: Fri Aug 14 13:35:31 2020 +0100 build: rewrite most of configure using new macros Most of the checks are now a single macro call, making the configure script much easier to read. The use of --enable and --with flags has been streamlined. Optional libraries use --with-foo, some of them accepting the value 'dyn' to activate runtime dynamic loading. The optional formats use --enable, again with the value 'dyn' enabling dynamic loading. As before, the default behaviour is to detect libraries and enable support for available ones. If an explicitly enabled feature has a dependency that is missing or disabled, an error is reported. diff --git a/INSTALL b/INSTALL index 3e8e272e..170a5e70 100644 --- a/INSTALL +++ b/INSTALL @@ -53,17 +53,14 @@ To compile and install SoX (executables, libraries, manual pages) with a default configuration for your platform, run the following commands: ./configure - make -s + make make install -There should be no errors and few, if any, warnings during the `make --s' stage. Any warnings about pointer mismatch or conversion should +There should be no errors and few, if any, warnings during the `make' +stage. Any warnings about pointer mismatch or conversion should be treated with deep suspicion. -The `make install' command may require `root' priviliges; for example, -on some systems, the following modification to the command is needed: - - sudo make install +The `make install' command may require `root' priviliges. To run a selection of tests on the installed sox executable: @@ -81,8 +78,8 @@ Again, `root' priviliges may be needed at the install stages. -Custom build options on a POSIX system --------------------------------------- +Custom build options +-------------------- Selection of optional libraries and of other build options can be made by adding parameters to the `./configure' command line (above). Run @@ -104,61 +101,33 @@ For example, ./configure --with-distro='Super Linux OS 6.1' If any libraries are installed in a non-standard locations in your -system then you can use the CPPFLAGS and LDFLAGS variables to allow -configure to find them. For example: - -./configure CPPFLAGS="-I/home/sox/include -I/usr/local/multimedia/include" LDFLAGS="-L/home/sox/lib -L/usr/local/multimedia/lib" - -If you are compiling under cygwin and would like to create a static -sox.exe using mingw libraries then you can use the following: - -./configure CC="gcc -mno-cygwin" --disable-shared - -The next cygwin example is used to build the cygwin version of SoX that is -distributed by the project. It tells gcc to prefer static libraries -over dynamic ones and to use some static libraries compiled manually -and installed under /usr/local. - -./configure LDFLAGS="-static -L/usr/local/lib" CPPFLAGS=-I/usr/local/include - -You can run "cygcheck.exe src/sox.exe" after compiling to see which -dynamic DLL's will be required to be distributed with the cygwin -executable. +system, the compiler and linker must be informed of this. Often, +environment variables can be used for this purpose. For example, if +using the GNU or Clang/LLVM toolchains, the following might be used in +a Bourne-compatible shell: -Alternatively, you can make use of the "cygbuild" script distributed -with SoX source that is used to automate all steps of building -a win32 package. "osxbuild" script is used to automate all steps -of building a MacOS X package. +export CPATH=/usr/local/include +export LIBRARY_PATH=/usr/local/lib -Newer versions of SoX include support for loading libraries for -file formats at runtime. The main usage of this feature is to -allow shipping SoX without dependencies on external libraries -that are not globally used or have redistribution restrictions. -If you experience problems with this then you may wish to disable -this feature: +For other compilers and shells, consult their respective manuals. -./configure --without-libltdl +Optional features +----------------- -Also, the default behavior even when libltdl is used is to link -all file format handlers into libsox as there is a performance -hit when dynamically loading external libraries. To force a format -handler to be built as a dynamically loaded module, pass "dyn" to -its --with-* option. For example, to build pulseaudio handler as -an external dynamic library: +Support for some file formats is optional and controlled by --enable-* +flags to configure. If the value "dyn" is passed to these flags, +e.g. --enable-flac=dyn, the corresponding code is built as a module +and loaded at runtime. -./configure --with-pulseaudio=dyn +Use of external libraries is controlled by --with-* flags. Some of +these accept the value "dyn" to enable runtime loading of the library. -A subset of external libraries can be configured to be dlopen()'ed -at run time instead of being linked in. This will allow one to -distribute a binary with optional features that only require -a user to install the missing libraries into their system. This -can be enabled using: +The runtime loading feature is mainly useful for distributing the +"sox" executable to systems that may not have all the external +libraries installed. ---enable-dl-lame ---enable-dl-mad ---enable-dl-sndfile ---enable-dl-amrnb ---enable-dl-amrwb +For a complete list of optional formats and libraries, including which +support runtime loading, refer to the "configure --help" output. Testing ------- diff --git a/configure.ac b/configure.ac index b9822490..146d0d55 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,8 @@ LT_INIT([win32-dll]) AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=name], [Provide distribution name]), - AC_DEFINE_UNQUOTED(DISTRO, ["$with_distro"], [Distribution name])) + AC_DEFINE_UNQUOTED(DISTRO, ["$with_distro"], [Distribution name]) + SOX_REPORT([build], [distro name], [${with_distro:-unspecified}])) dnl Checks for programs. AC_PROG_CC @@ -58,6 +59,7 @@ AC_FUNC_FSEEKO dnl Check for OpenMP AC_OPENMP CFLAGS="$CFLAGS $OPENMP_CFLAGS" +SOX_REPORT([other], [OpenMP], [${OPENMP_CFLAGS:-no}]) if test "$ac_cv_header_glob_h" != yes; then AC_CHECK_FUNC([FindFirstFileA], [ @@ -66,470 +68,99 @@ if test "$ac_cv_header_glob_h" != yes; then fi AM_CONDITIONAL(HAVE_WIN32_GLOB, test "$HAVE_WIN32_GLOB" = yes) -AC_ARG_WITH(dyn-default,AS_HELP_STRING([--with-dyn-default],[Default to loading optional formats dynamically]),opt_default=dyn,opt_default=yes) - -AC_ARG_WITH(libltdl, - AS_HELP_STRING([--without-libltdl], - [Don't try to use libltdl for external dynamic library support]), - with_libltdl=$withval, with_libltdl=default) - -if test "$with_libltdl" = "default"; then - dnl Default to no libltdl support when building only static libraries - if test "$enable_shared" != "no"; then - using_libltdl=yes - else - using_libltdl=no - fi - with_libltdl="yes" -else - using_libltdl=$with_libltdl -fi - -dnl Check if ltdl should be enabled. -if test "$using_libltdl" != "no"; then - AC_CHECK_HEADERS(ltdl.h, - AC_CHECK_LIB(ltdl, lt_dlinit, LIBLTDL="$LIBLTDL -lltdl", - using_libltdl=no), using_libltdl=no) -fi -if test "$using_libltdl" = yes; then - AC_DEFINE([HAVE_LIBLTDL], 1, [Define to 1 if you have libltdl]) -fi -AM_CONDITIONAL(HAVE_LIBLTDL, test x$using_libltdl = xyes) -AC_SUBST(LIBLTDL) - - -dnl Check for magic library -AC_ARG_WITH(magic, - AS_HELP_STRING([--without-magic], - [Don't try to use magic])) -using_magic=no -if test "$with_magic" != "no"; then - using_magic=yes - AC_CHECK_HEADER(magic.h, - [AC_CHECK_LIB(magic, magic_open, MAGIC_LIBS="-lmagic",using_magic=no)], - using_magic=no) - if test "$with_magic" = "yes" -a "$using_magic" = "no"; then - AC_MSG_FAILURE([cannot find magic]) - fi -fi -if test "$using_magic" = yes; then - AC_DEFINE(HAVE_MAGIC, 1, [Define to 1 if you have magic.]) -fi -AM_CONDITIONAL(HAVE_MAGIC, test x$using_magic = xyes) -AC_SUBST(MAGIC_LIBS) - - - -dnl Check for png libraries -AC_ARG_WITH(png, - AS_HELP_STRING([--without-png], - [Don't try to use png])) -using_png=no -if test "$with_png" != "no"; then - AC_CHECK_HEADERS(png.h libpng/png.h,using_png=yes) - if test "$using_png" = "yes"; then - AC_CHECK_LIB(png, png_set_rows, PNG_LIBS="$PNG_LIBS -lpng -lz", - [AC_CHECK_LIB(png12, png_set_rows, - PNG_LIBS="$PNG_LIBS -lpng12 -lz", - using_png=no, -lz)], -lz) - fi - if test "$with_png" = "yes" -a "$using_png" = "no"; then - AC_MSG_FAILURE([cannot find png]) - fi -fi -if test "$using_png" = yes; then - AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have PNG.]) -fi -AM_CONDITIONAL(HAVE_PNG, test x$using_png = xyes) -AC_SUBST(PNG_LIBS) - - - -dnl Test for LADSPA -AC_ARG_WITH(ladspa, - AS_HELP_STRING([--without-ladspa], [Don't try to use LADSPA])) -using_ladspa=no -if test "$with_ladspa" != "no" -a "$using_libltdl" = "yes"; then - using_ladspa=yes - AC_DEFINE(HAVE_LADSPA_H, 1, [1 if should enable LADSPA]) -fi -LADSPA_PATH=${libdir}/ladspa -AC_ARG_WITH(ladspa-path, - AS_HELP_STRING([--with-ladspa-path], [Default search path for LADSPA plugins])) -AC_SUBST(LADSPA_PATH) - - - -dnl Check for MAD libraries -AC_ARG_WITH(mad, - AS_HELP_STRING([--without-mad], - [Don't try to use MAD (MP3 Audio Decoder)])) -using_mad=no -if test "$with_mad" != "no"; then - using_mad=yes - AC_CHECK_HEADERS(mad.h,, using_mad=no) - AC_MSG_CHECKING([whether to dlopen mad]) - AC_ARG_ENABLE(dl_mad, - AS_HELP_STRING([--enable-dl-mad], [Dlopen mad instead of linking in.]), - enable_dl_mad=$enableval, enable_dl_mad=no) - AC_MSG_RESULT($enable_dl_mad) - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_mad" = "xyes"; then - AC_DEFINE(DL_MAD, 1, [Define to dlopen() mad.]) - else - enable_dl_mad="no" - AC_CHECK_LIB(mad, mad_stream_buffer, MP3_LIBS="$MP3_LIBS -lmad",using_mad=no) - if test "$with_mad" = "yes" -a "$using_mad" = "no"; then - AC_MSG_FAILURE([cannot find libmad]) - fi - fi -fi - - - -dnl Check for id3tag libraries -AC_ARG_WITH(id3tag, - AS_HELP_STRING([--without-id3tag], - [Don't try to use id3tag])) -using_id3tag=no -if test "$with_id3tag" != "no"; then - using_id3tag=yes - AC_CHECK_HEADER(id3tag.h, - [AC_CHECK_LIB(id3tag, id3_file_open, MP3_LIBS="$MP3_LIBS -lid3tag -lz",using_id3tag=no, -lz)], - using_id3tag=no) - if test "$with_id3tag" = "yes" -a "$using_id3tag" = "no"; then - AC_MSG_FAILURE([cannot find id3tag]) - fi -fi -if test "$using_id3tag" = yes; then - AC_DEFINE(HAVE_ID3TAG, 1, [Define to 1 if you have id3tag.]) -fi -AM_CONDITIONAL(HAVE_ID3TAG, test x$using_id3tag = xyes) - - - -dnl Check for LAME library. -AC_ARG_WITH(lame, - AS_HELP_STRING([--without-lame], - [Don't try to use LAME (LAME Ain't an MP3 Encoder)])) -using_lame=no -if test "$with_lame" != "no"; then - using_lame=yes - AC_MSG_CHECKING([whether to dlopen lame]) - AC_ARG_ENABLE(dl_lame, - AS_HELP_STRING([--enable-dl-lame], [Dlopen lame instead of linking in.]), - enable_dl_lame=$enableval, enable_dl_lame=no) - AC_MSG_RESULT($enable_dl_lame) - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_lame" = "xyes"; then - AC_DEFINE(DL_LAME, 1, [Define to dlopen() lame.]) - else - enable_dl_lame="no" - AC_CHECK_HEADERS(lame/lame.h,, - [AC_CHECK_HEADERS(lame.h, [], using_lame=no)]) - AC_CHECK_LIB(mp3lame, lame_get_lametag_frame, MP3_LIBS="$MP3_LIBS -lmp3lame", using_lame=no) - if test "$with_lame" = "yes" -a "$using_lame" = "no"; then - AC_MSG_FAILURE([cannot find LAME]) - fi - fi -fi - - - -dnl Check for Twolame library -AC_ARG_WITH(twolame, - AS_HELP_STRING([--without-twolame], - [Don't try to use Twolame (MP2 Audio Encoder)])) -using_twolame=no -if test "$with_twolame" != "no"; then - using_twolame=yes - AC_CHECK_HEADERS(twolame.h,, using_twolame=no) - AC_MSG_CHECKING([whether to dlopen twolame]) - AC_ARG_ENABLE(dl_twolame, - AS_HELP_STRING([--enable-dl-twolame], [Dlopen twolame instead of linking in.]), - enable_dl_twolame=$enableval, enable_dl_twolame=no) - AC_MSG_RESULT($enable_dl_twolame) - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_twolame" = "xyes"; then - AC_DEFINE(DL_TWOLAME, 1, [Define to dlopen() libtwolame.]) - else - enable_dl_twolame="no" - AC_CHECK_LIB(twolame, twolame_init, MP3_LIBS="$MP3_LIBS -ltwolame",using_twolame=no) - if test "$with_twolame" = "yes" -a "$using_twolame" = "no"; then - AC_MSG_FAILURE([cannot find libtwolame]) - fi - fi -fi - -# Check for libgsm -HAVE_LIBGSM=yes -AC_CHECK_HEADERS(gsm/gsm.h, , - [AC_CHECK_HEADERS(gsm.h, , HAVE_LIBGSM=no)]) - AC_CHECK_LIB(gsm, gsm_create, [ - AC_DEFINE(HAVE_LIBGSM, 1, [Define if libgsm is available]) - LIBGSM_LIBS="$LIBGSM_LIBS -lgsm"], HAVE_LIBGSM=no) -AC_SUBST(LIBGSM_LIBS) - - - -# Check for liblpc10 -found_liblpc10=yes -AC_CHECK_HEADERS(lpc10.h, , - [AC_CHECK_HEADERS(lpc10.h, ,found_liblpc10=no)]) - AC_CHECK_LIB(lpc10, create_lpc10_encoder_state, LPC10_LIBS="$LPC10_LIBS -llpc10", found_liblpc10=no) -if test "$found_liblpc10" = yes; then - AC_DEFINE(HAVE_LIBLPC10, 1, [Define if you are using an external liblpc10]) -else - LPC10_CFLAGS='-I${top_srcdir}/lpc10' - LPC10_LIBS=../lpc10/liblpc10.la -fi -AM_CONDITIONAL(HAVE_LIBLPC10, test x$found_liblpc10 = xyes) - - - -# Check for Ogg Vorbis -AC_OPTIONAL_FORMAT(oggvorbis, OGGVORBIS, [AC_CHECK_HEADER(vorbis/codec.h, - [AC_CHECK_LIB(ogg, ogg_packet_clear, OGGVORBIS_LIBS="$OGGVORBIS_LIBS -logg", using_oggvorbis=no) - AC_CHECK_LIB(vorbis, vorbis_analysis_headerout, OGGVORBIS_LIBS="-lvorbis $OGGVORBIS_LIBS", using_oggvorbis=no, $OGGVORBIS_LIBS) - AC_CHECK_LIB(vorbisfile, ov_clear, OGGVORBIS_LIBS="-lvorbisfile $OGGVORBIS_LIBS", using_oggvorbis=no, $OGGVORBIS_LIBS) - AC_CHECK_LIB(vorbisenc, vorbis_encode_init_vbr, OGGVORBIS_LIBS="-lvorbisenc $OGGVORBIS_LIBS", using_oggvorbis=no, $OGGVORBIS_LIBS)], - using_oggvorbis=no)]) - -# Check for Opus -AC_OPTIONAL_FORMAT(opus, OPUS, - [PKG_CHECK_MODULES(OPUS, [opusfile], [], using_opus=no)], - using_opus=no) - - -dnl Check for FLAC library -AC_OPTIONAL_FORMAT(flac, FLAC, - [PKG_CHECK_MODULES([FLAC], [flac], [], [using_flac=no])]) - - -tmp_using_amrwb=no -AC_CHECK_HEADERS(opencore-amrwb/dec_if.h, - [AC_CHECK_LIB(opencore-amrwb, D_IF_init, - [OPENCORE_AMRWB_LIBS="$OPENCORE_AMRWB_LIBS -lopencore-amrwb"; tmp_using_amrwb=$opt_default])]) -AC_CHECK_HEADERS(vo-amrwbenc/enc_if.h, - [AC_CHECK_LIB(vo-amrwbenc, E_IF_init, - [VO_AMRWBENC_LIBS="$VO_AMRWBENC_LIBS -lvo-amrwbenc"; tmp_using_amrwb=$opt_default])]) -AC_ARG_ENABLE(dl_opencore_amrwb, - AS_HELP_STRING([--enable-dl-opencore-amrwb], - [Dlopen opencore-amrbw instead of linking in.])) -AC_ARG_ENABLE(dl_vo_amrwbenc, - AS_HELP_STRING([--enable-dl-vo-amrwbenc], - [Dlopen vo-amrbwenc instead of linking in.])) -if test "$using_libltdl" != "yes"; then - enable_dl_opencore_amrwb=no - enable_dl_vo_amrwbenc=no -fi -if test "$enable_dl_opencore_amrwb" = "yes"; then - AC_DEFINE(DL_OPENCORE_AMRWB, 1, [Define to dlopen() opencore-amrwb.]) -else - AMRWB_LIBS="$AMRWB_LIBS $OPENCORE_AMRWB_LIBS" -fi -if test "$enable_dl_vo_amrwbenc" = "yes"; then - AC_DEFINE(DL_VO_AMRWBENC, 1, [Define to dlopen() vo-amrwbenc.]) -else - AMRWB_LIBS="$AMRWB_LIBS $VO_AMRWBENC_LIBS" -fi -AC_OPTIONAL_FORMAT(amrwb, AMRWB, [using_amrwb=$tmp_using_amrwb]) - -dnl When enable_dl_amrnb, do not let add libraries to be linked in -dnl since they will be dlopen()'ed instead. -ac_sox_save_AMRNB_LIBS="$AMRNB_LIBS" -tmp_using_amrnb=$opt_default -AC_CHECK_HEADERS(opencore-amrnb/interf_dec.h, - [AC_CHECK_LIB(opencore-amrnb, Decoder_Interface_init, - AMRNB_LIBS="$AMRNB_LIBS -lopencore-amrnb", tmp_using_amrnb=no)], - [tmp_using_amrnb=no]) -AC_ARG_ENABLE(dl_opencore_amrnb, - AS_HELP_STRING([--enable-dl-opencore-amrnb], - [Dlopen opencore-amrnb instead of linking in.])) -if test "$using_libltdl" = "yes" -a "$enable_dl_opencore_amrnb" = "yes"; then - AC_DEFINE(DL_OPENCORE_AMRNB, 1, [Define to dlopen() opencore-amrnb.]) - dnl When enable_dl_amrnb, do not let SOX_PATH_AMRNB add libraries - dnl to be linked in (since they will be dlopen()'ed instead). - AMRNB_LIBS="$ac_sox_save_AMRNB_LIBS" - dnl Force to using regardless if headers or libraries were found. - tmp_using_amrnb=yes -else - enable_dl_opencore_amrnb="no" -fi -AC_OPTIONAL_FORMAT(amrnb, AMRNB, [using_amrnb=$tmp_using_amrnb]) - - -AC_OPTIONAL_FORMAT(wavpack, WAVPACK, [AC_CHECK_HEADER(wavpack/wavpack.h, [AC_CHECK_LIB(wavpack, WavpackGetSampleRate, WAVPACK_LIBS="$WAVPACK_LIBS -lwavpack",using_wavpack=no)], using_wavpack=no)]) - - - -AC_OPTIONAL_FORMAT(sndio, SNDIO, [AC_CHECK_HEADER(sndio.h, [AC_CHECK_LIB(sndio, sio_open, SNDIO_LIBS="$SNDIO_LIBS -lsndio",using_sndio=no)], using_sndio=no)]) - - - -AC_OPTIONAL_FORMAT(coreaudio, COREAUDIO, [AC_CHECK_HEADER(CoreAudio/CoreAudio.h, [COREAUDIO_LIBS="$COREAUDIO_LIBS -Wl,-framework,CoreAudio"], using_coreaudio=no)]) - - - -AC_OPTIONAL_FORMAT(alsa, ALSA, [AC_CHECK_HEADER(alsa/asoundlib.h, [AC_CHECK_LIB(asound, snd_pcm_open, ALSA_LIBS="$ALSA_LIBS -lasound",using_alsa=no)], using_alsa=no)]) - - - -AC_OPTIONAL_FORMAT(ao, AO, [AC_CHECK_HEADER(ao/ao.h, [AC_CHECK_LIB(ao, ao_play, AO_LIBS="$AO_LIBS -lao",using_ao=no)], using_ao=no)]) - - - -AC_OPTIONAL_FORMAT(pulseaudio, PULSEAUDIO, [AC_CHECK_HEADER(pulse/simple.h, [AC_CHECK_LIB(pulse, pa_simple_new, PULSEAUDIO_LIBS="$PULSEAUDIO_LIBS -lpulse -lpulse-simple",using_pulseaudio=no,"-lpulse-simple")], using_pulseaudio=no)]) - - -AC_OPTIONAL_FORMAT(waveaudio, WAVEAUDIO, [AC_CHECK_HEADER(mmsystem.h, [WAVEAUDIO_LIBS="$WAVEAUDIO_LIBS -lwinmm"], using_waveaudio=no, [[#include <windows.h>]])]) - -dnl When enable_dl_sndfile, do not let SOX_PATH_SNDFILE add libraries -dnl to be linked in (since they will be dlopen()'ed instead). -ac_sox_save_SNDFILE_LIBS="$LIBSNDFILE_LIBS" -SOX_PATH_SNDFILE(tmp_using_sndfile=$opt_default, tmp_using_sndfile=no) -AC_ARG_ENABLE(dl_sndfile, - AS_HELP_STRING([--enable-dl-sndfile], - [Dlopen sndfile instead of linking in.]), - enable_dl_sndfile=$enableval, enable_dl_sndfile=no) -if test "x$tmp_using_sndfile" = "xyes"; then - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_sndfile" = "xyes"; then - AC_DEFINE(DL_LIBSNDFILE, 1, [Define to dlopen() sndfile.]) - dnl When enable_dl_sndfile, do not let SOX_PATH_SNDFILE add libraries - dnl to be linked in (since they will be dlopen()'ed instead). - LIBSNDFILE_LIBS="$ac_sox_save_SNDFILE_LIBS" - else - enable_dl_sndfile="no" - fi -fi -AC_OPTIONAL_FORMAT(sndfile, SNDFILE, [using_sndfile=$tmp_using_sndfile]) - - - -AC_OPTIONAL_FORMAT(oss, OSS, [AC_CHECK_HEADERS(sys/soundcard.h,, using_oss=no)]) - - - -AC_OPTIONAL_FORMAT(sunaudio, SUNAUDIO, [AC_CHECK_HEADERS(sys/audioio.h,, - [AC_CHECK_HEADERS(sun/audioio.h,, using_sunaudio=no)])]) - - - -# MP2/MP3 format depends on libmad || LAME || twolame -AC_OPTIONAL_FORMAT(mp3, MP3, [ - if test "$using_mad" != yes -a "$using_lame" != yes -a "$using_twolame" != yes; then - using_mp3=no - fi]) - - - -# GSM format depends on libgsm -AC_OPTIONAL_FORMAT(gsm, GSM, [using_gsm=$HAVE_LIBGSM]) - - - -# LPC10 format depends on liblpc10 -# No need to check; LPC10 is always found -AC_OPTIONAL_FORMAT(lpc10, LPC10) - - - -dnl Check if we want to disable all symlinks -AC_MSG_CHECKING([whether to enable symlinks]) -AC_ARG_ENABLE(symlinks, - AS_HELP_STRING([--disable-symlinks], [Don't make any symlinks to sox.]),,enable_symlinks=yes) -AC_MSG_RESULT($enable_symlinks) - -if test "$enable_symlinks" = "yes"; then - SYMLINKS=soxi - if test "" \ - -o "$using_alsa" = yes \ - -o "$using_ao" = yes \ - -o "$using_coreaudio" = yes \ - -o "$using_oss" = yes \ - -o "$using_pulseaudio" = yes \ - -o "$using_sndio" = yes \ - -o "$using_sunaudio" = yes \ - -o "$using_waveaudio" = yes \ - ; then - SYMLINKS="$SYMLINKS play rec" - fi -fi -AC_SUBST(SYMLINKS) - -AM_CONDITIONAL(STATIC_LIBSOX_ONLY, test "$enable_shared" = "no" -a "$enable_static" = "yes") +SOX_WITH_LIB([libltdl], [ltdl.h], [ltdl], [lt_dlinit]) + +SOX_WITH([ladspa], [Enable LADSPA plugin support], + [SOX_NEED_DL([${with_ladspa:+dyn}], [--with-ladspa])], + [AC_DEFINE([HAVE_LADSPA_H], [1], [Define if LADSPA support is enabled]) + AS_CASE([$HAVE_LADSPA], [yes], [LADSPA_PATH='${libdir}/ladspa'], + [LADSPA_PATH=$HAVE_LADSPA])], [], [], [*], [$HAVE_LIBLTDL]) +AC_SUBST([LADSPA_PATH]) +SOX_REPORT([other], [LADSPA effect plugins], [$HAVE_LADSPA]) + +dnl Various libraries + +SOX_WITH_LIB([magic], [magic.h], [magic], [magic_open]) +SOX_CHECK_LIB([ZLIB], [zlib.h], [z], [uncompress]) +SOX_WITH_LIB([png], [png.h], [png], [png_set_rows], [], [], [], [$ZLIB_LIBS]) +SOX_WITH_LIB([id3tag], [id3tag.h], [id3tag], [id3_file_open]) +SOX_WITH_LIB([libgsm], [gsm/gsm.h gsm.h], [gsm], [gsm_create]) + +dnl Optional formats + +SOX_ENABLE([formats], [Default setting for optional formats], + [SOX_NEED_DL([$HAVE_FORMATS], [--enable-formats=dyn])], [], [], [], [dyn]) + +SOX_DL_LIB([opencore-amrnb], [opencore-amrnb/interf_dec.h], [opencore-amrnb], + [Decoder_Interface_init]) +SOX_FMT_REQ([amrnb], [OPENCORE_AMRNB]) + +SOX_DL_LIB([opencore-amrwb], [opencore-amrwb/dec_if.h], [opencore-amrwb], + [D_IF_init]) +SOX_DL_LIB([vo-amrwbenc], [vo-amrwbenc/enc_if.h], [vo-amrwbenc], [E_IF_init]) +SOX_FMT_REQ([amrwb], [OPENCORE_AMRWB VO_AMRWBENC]) + +SOX_FMT_PKG([flac], [flac]) +SOX_FMT_REQ([gsm], [LIBGSM]) + +SOX_CHECK_LIB([LIBLPC10], [lpc10.h], [lpc10], [create_lpc10_encoder_state], + [LPC10_LIBS="$LIBLPC10_LIBS"], + [LPC10_LIBS=../lpc10/liblpc10.la; LPC10_CFLAGS='-I${top_srcdir}/lpc10']) +AM_CONDITIONAL([HAVE_LIBLPC10], [test $HAVE_LIBLPC10 = yes]) +SOX_FMT([lpc10]) + +SOX_DL_LIB([mad], [mad.h], [mad], [mad_stream_buffer]) +SOX_DL_LIB([lame], [lame/lame.h lame.h], [mp3lame], [lame_init]) +SOX_DL_LIB([twolame], [twolame.h], [twolame], [twolame_init]) +SOX_FMT_REQ([mp3], [MAD LAME TWOLAME]) +MP3_LIBS="$MP3_LIBS $ID3TAG_LIBS" + +SOX_FMT_PKG([oggvorbis], [ogg vorbis vorbisenc vorbisfile]) +SOX_FMT_PKG([opus], [opusfile]) + +SOX_DL_LIB([libsndfile], [sndfile.h], [sndfile], [sf_open_virtual]) +SOX_FMT_REQ([sndfile], [LIBSNDFILE]) + +SOX_FMT_LIB([wavpack], [wavpack/wavpack.h], [wavpack], [WavpackGetSampleRate]) + +dnl Audio devices + +SOX_FMT_LIB([alsa], [alsa/asoundlib.h], [asound], [snd_pcm_open], [], [], + [devices]) +SOX_FMT_LIB([ao], [ao/ao.h], [ao], [ao_play], [], [], [devices]) +SOX_FMT_LIB([coreaudio], [CoreAudio/CoreAudio.h], [], [AudioDeviceStart], [], + [[-Wl,-framework,CoreAudio]], [devices]) +SOX_FMT_LIB([pulseaudio], [pulse/simple.h], [pulse], [pa_simple_new], [], + [-lpulse-simple], [devices]) +SOX_FMT_HEADERS([oss], [sys/soundcard.h], [SOUND_MIXER_MUTE], [], [devices]) +SOX_FMT_LIB([sndio], [sndio.h], [sndio], [sio_open], [], [], [devices]) +SOX_FMT_HEADERS([sunaudio], [sys/audioio.h sun/audioio.h], + [AUDIO_GETINFO], [], [devices]) +SOX_FMT_LIB([waveaudio], [mmsystem.h], [winmm], [waveOutOpen], [windows.h], [], + [devices]) + +dnl Check if we want to create symlinks +AC_ARG_ENABLE([symlinks], + AS_HELP_STRING([--enable-symlinks], [Create soxi/play/rec links (YES/no)])) +AS_CASE([${enable_symlinks:=yes}], [yes], [ + SYMLINKS=soxi + AS_IF([test -n "$sox_devices"], [SYMLINKS="$SYMLINKS play rec"])]) +AC_SUBST([SYMLINKS]) +SOX_REPORT([build], [symlinks], [${SYMLINKS:-none}]) + +AM_CONDITIONAL(STATIC_LIBSOX_ONLY, test "$enable_shared" = "no") dnl Generate output files. AC_CONFIG_FILES(Makefile src/Makefile lpc10/Makefile sox.pc) AC_OUTPUT -if test "$using_lpc10" != "no"; then - if test "$found_liblpc10" = "yes"; then - lpc10_option="(external)" - else - lpc10_option="(in-tree)" - fi -fi +SOX_REPORT_SECTION([build], [Build options:]) +SOX_REPORT_SECTION([with_libs], [Optional libraries:], [sort]) +SOX_REPORT_SECTION([formats], [Optional formats:], [sort]) +SOX_REPORT_SECTION([devices], [Audio devices:], [sort]) +SOX_REPORT_SECTION([other], [Other options:]) +SOX_REPORT_PRINT -# Report configuration. -echo -echo "BUILD OPTIONS" -echo "Distro name ...............${with_distro:-unspecified}" -echo "Dynamic loading support....$using_libltdl" -echo "Pkg-config location........$pkgconfigdir" -echo "Symlinks enabled...........${SYMLINKS:-no}" -echo -echo "OPTIONAL DEVICE DRIVERS" -echo "ao (Xiph)..................$using_ao" -echo "alsa (Linux)...............$using_alsa" -echo "coreaudio (Mac OS X).......$using_coreaudio" -echo "sndio (OpenBSD)............$using_sndio" -echo "oss........................$using_oss" -echo "pulseaudio.................$using_pulseaudio" -echo "sunaudio...................$using_sunaudio" -echo "waveaudio (MS-Windows).....$using_waveaudio" -echo -echo "OPTIONAL FILE FORMATS" -echo "amrnb......................$using_amrnb" -if test "x$using_amrnb" = "xyes"; then -echo " dlopen amrnb..............${enable_dl_opencore_amrnb:-no}" -fi -echo "amrwb......................$using_amrwb" -if test "x$using_amrwb" = "xyes"; then -echo " dlopen opencore-amrwb.....${enable_dl_opencore_amrwb:-no}" -echo " dlopen vo-amrwbenc........${enable_dl_vo_amrwbenc:-no}" -fi -echo "flac.......................$using_flac" -echo "gsm........................$using_gsm" -echo "lpc10......................$using_lpc10 $lpc10_option" -echo "mp2/mp3....................$using_mp3" -echo " id3tag....................$using_id3tag" -echo " lame......................$using_lame" -if test "x$using_lame" = "xyes"; then -echo " dlopen lame...............$enable_dl_lame" -fi -echo " mad.......................$using_mad" -if test "x$using_mad" = "xyes"; then -echo " dlopen mad................$enable_dl_mad" -fi -echo " twolame...................$using_twolame" -if test "x$using_twolame" = "xyes"; then -echo " dlopen twolame............$enable_dl_twolame" -fi -echo "oggvorbis..................$using_oggvorbis" -echo "opus.......................$using_opus" -echo "sndfile....................$using_sndfile" -if test "x$using_sndfile" = "xyes"; then -echo " dlopen sndfile............$enable_dl_sndfile" -fi -echo "wavpack....................$using_wavpack" -echo -echo "OTHER OPTIONS" -echo "ladspa effects.............$using_ladspa" -echo "magic support..............$using_magic" -echo "png support................$using_png" -if test "x$OPENMP_CFLAGS" = "x"; then -echo "OpenMP support.............no" -else -echo "OpenMP support.............yes, $OPENMP_CFLAGS" -fi echo -echo "Configure finished. Do 'make -s && make install' to compile and install SoX." +echo "Configure finished. Run 'make' to compile SoX." echo diff --git a/m4/optional-fmt.m4 b/m4/optional-fmt.m4 deleted file mode 100644 index d0623c83..00000000 --- a/m4/optional-fmt.m4 +++ /dev/null @@ -1,49 +0,0 @@ -dnl SoX autoconf macro: optional format (c) 2009 ro...@us... -dnl -dnl This program is free software; you can redistribute it and/or modify it -dnl under the terms of the GNU General Public License as published by the -dnl Free Software Foundation; either version 2 of the License, or (at your -dnl option) any later version. -dnl -dnl This program is distributed in the hope that it will be useful, but -dnl WITHOUT ANY WARRANTY; without even the implied warranty of -dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -dnl Public License for more details. -dnl -dnl You should have received a copy of the GNU General Public License along -dnl with this program; if not, write to the Free Software Foundation, Inc., -dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -dnl $1 package name e.g. flac -dnl $2 package name in conditionals e.g. FLAC -dnl $3 using check - -AC_DEFUN([AC_OPTIONAL_FORMAT], - [AC_ARG_WITH($1, AC_HELP_STRING([--with-$1=dyn], [load $1 dynamically])) - using_$1=$with_$1 - if test "_$with_$1" = _dyn; then - if test $using_libltdl != yes; then - AC_MSG_FAILURE([not using libltdl; cannot load $1 dynamically]) - fi - elif test "_$with_$1" = _; then - using_$1=$opt_default - elif test "_$with_$1" != _yes -a "_$with_$1" != _no; then - AC_MSG_FAILURE([invalid selection --with-$1=$with_$1]) - fi - if test _$with_$1 != _no; then - $3 - if test _$with_$1 != _ -a $using_$1 = no; then - AC_MSG_FAILURE([cannot find $1]) - fi - fi - if test "$using_$1" != no; then - AC_DEFINE(HAVE_$2, 1, [Define to 1 if you have $1.]) - if test "$using_$1" = yes; then - AC_DEFINE(STATIC_$2, 1, [Define to 1 if you have static $1.]) - fi - fi - AM_CONDITIONAL(HAVE_$2, test $using_$1 != no) - AM_CONDITIONAL(STATIC_$2, test $using_$1 = yes) - AC_SUBST($2_CFLAGS) - AC_SUBST($2_LIBS)] -) diff --git a/m4/sndfile.m4 b/m4/sndfile.m4 deleted file mode 100644 index 8fc026c9..00000000 --- a/m4/sndfile.m4 +++ /dev/null @@ -1,65 +0,0 @@ -dnl SOX_PATH_SNDFILE -dnl Based off of shout.m4 from xiph package. -dnl cba...@us... 1-3-2007 -dnl -dnl Original Authors: -dnl Jack Moffitt <ja...@ic...> 08-06-2001 -dnl Rewritten for libshout 2 -dnl Brendan Cully <br...@xi...> 20030612 -dnl -# SOX_PATH_SNDFILE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -# Test for libsndfile, and define LIBSNDFILE_CFLAGS and LIBSNDFILE_LIBS -AC_DEFUN([SOX_PATH_SNDFILE], -[dnl -# Step 1: Use pkg-config if available -m4_ifdef([PKG_CHECK_MODULES], - [# PKG_CHECK_MODULES available - PKG_CHECK_MODULES(LIBSNDFILE, sndfile, have_sndfile="maybe", - have_sndfile="no")], - [# Step 2: use pkg-config manually if available - AC_PATH_PROG([PKGCONFIG], [pkg-config], [none]) - if test "$PKGCONFIG" != "none" && `$PKGCONFIG --exists sndfile` - then - LIBSNDFILE_CFLAGS=`$PKGCONFIG --cflags sndfile`" $ac_save_SNDFILE_CFLAGS $LIBSNDFILE_CFLAGS" - LIBSNDFILE_LIBS=`$PKGCONFIG --libs sndfile`" $ac_save_SNDFILE_LIBS $LIBSNDFILE_LIBS" - have_sndfile="maybe" - else - have_sndfile="no" - fi - ]) - -# Step 3: Even if pkg-config says its not installed, user may have -# manually installed libraries with no -kg-config support. -if test "$have_sndfile" = "no" -then - # As a last resort, just hope that header and ilbrary can - # be found in default paths and that it doesn't need - # to link against any other libraries. - LIBSNDFILE_LIBS="-lsndfile $LIBSNDFILE_LIBS" - have_sndfile="maybe" -fi - -# Even if pkg-config or similar told us how to find library, -# do a safety check. -if test "$have_sndfile" != "no" -then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $LIBSNDFILE_CFLAGS" - LIBS="$LIBS $LIBSNDFILE_LIBS" - AC_CHECK_HEADER([sndfile.h], [ - AC_DEFINE([HAVE_SNDFILE_H], 1, [Define if you have <sndfile.h>]) - AC_CHECK_FUNC([sf_open_virtual], [ - ifelse([$1], , :, [$1]) - have_sndfile="yes" - ]) - ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" -fi - -if test "$have_sndfile" != "yes" -then - ifelse([$2], , :, [$2]) -fi -])dnl SOX_PATH_SNDFILE diff --git a/src/Makefile.am b/src/Makefile.am index e0986584..c4cd6c71 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -90,8 +90,8 @@ libsox_la_LDFLAGS = -no-undefined -version-info @SHLIB_VERSION@ \ -export-symbols-regex '^(sox_.*|lsx_(([cm]|re)alloc.*|check_read_params|(close|open)_dllibrary|(debug(_more|_most)?|fail|report|warn)_impl|eof|error|fail_errno|filelength|find_(enum_(text|value)|file_extension)|flush|getopt(_init)?|lpc10_(create_(de|en)coder_state|(de|en)code)|raw(read|write)|read(_b_buf|buf|chars)|rewind|seeki|sigfigs3p?|strcasecmp|strdup|tell|unreadb|write(b|_b_buf|buf|s)))$$' if HAVE_LIBLTDL - libsox_la_CFLAGS += $(LTDLINCL) - libsox_la_LDFLAGS += $(LIBLTDL) + libsox_la_CFLAGS += $(LIBLTDL_CFLAGS) + libsox_la_LIBADD += $(LIBLTDL_LIBS) endif commit 50e65e2018cb3e6076dcfefafcfd6de5ec4c3a93 Author: Mans Rullgard <ma...@ma...> Date: Tue Aug 11 08:22:53 2020 +0100 build: add useful m4 macros diff --git a/m4/sox.m4 b/m4/sox.m4 new file mode 100644 index 00000000..2437d925 --- /dev/null +++ b/m4/sox.m4 @@ -0,0 +1,287 @@ +dnl +dnl SOX_NAME_TAG(NAME-TAG, [BODY]) +dnl +dnl Define using m4_pushdef: +dnl N First word of NAME-TAG +dnl L N sanitised for use as shell variable +dnl T Second word of NAME-TAG, if present, else +dnl L converted to upper case +dnl +dnl If BODY is provided, substitute it and m4_popdef N, L, and T. +dnl Otherwise, leave these macros defined. +dnl +AC_DEFUN([SOX_NAME_TAG], [ + m4_pushdef([nt], m4_split(m4_normalize($1))) + m4_pushdef([N], m4_car(nt)) + m4_pushdef([L], m4_bpatsubst(N, [[^0-9A-Za-z]], [_])) + m4_pushdef([T], m4_default(m4_argn([2], nt), m4_toupper(L))) + m4_popdef([nt]) + m4_ifnblank([$2], [$2 m4_popdef([N], [L], [T])]) +]) + +dnl +dnl SOX_INCLUDE(HEADER) +dnl +dnl Expands to "#include <HEADER>" followed by a newline. +dnl +AC_DEFUN([SOX_INCLUDE], [[#include <]]$1[[> +]]) + +dnl +dnl SOX_CHECK_HEADERS(HEADERS, [DECL], [IF-FOUND], [IF-NOT-FOUND], +dnl [EXTRA-HEADERS]) +dnl +dnl Check for presence of headers. +dnl +dnl HEADERS List of headers to try, stopping when one is found +dnl DECL Optional symbol to check for +dnl IF-FOUND Action to take if one of HEADERS is found +dnl IF-NOT-FOUND Action to take if none of HEADERS are found +dnl EXTRA-HEADERS Additional headers to #include +dnl +dnl Outputs: +dnl HAVE_HEADER: Set with AC_DEFINE to 1 for the first header found +dnl +AC_DEFUN([SOX_CHECK_HEADERS], [ + sox_ch_found=no + AC_CHECK_HEADERS([$1], [sox_ch_found=$ac_header; break], [], + [m4_map([SOX_INCLUDE], m4_split([$5]))]) + AS_CASE([$sox_ch_found], [no], [$4], [m4_ifblank([$2], [$3], + [AC_CHECK_DECL([$2], [$3], [$4], [SOX_INCLUDE([$sox_ch_found])])])]) +]) + +dnl +dnl SOX_CHECK_LIB(TAG, HEADERS, LIB, FUNC, [IF-FOUND], [IF-NOT-FOUND], +dnl [EXTRA-HEADERS], [EXTRA-LIBS]) +dnl +dnl Check for presence of headers and library. +dnl +dnl Arguments: +dnl TAG Prefix/suffix for output variable +dnl HEADERS List of headers searched with SOX_CHECK_HEADERS +dnl LIB Name of library to check +dnl FUNC Name of function in library +dnl IF-FOUND Action to take on success +dnl IF-NOT-FOUND Action to take on failure +dnl EXTRA-HEADERS Passed to SOX_CHECK_HEADERS +dnl EXTRA-LIBS Additional libraries (-lLIB) and linker flags +dnl +dnl Outputs: +dnl HAVE_TAG AC_DEFINE to 1 if found +dnl Set shell variable to 'yes' on success, 'no' otherwise +dnl TAG_LIBS Add '-lLIB EXTRA-LIBS' to start of shell variable +dnl +AC_DEFUN([SOX_CHECK_LIB], [ + m4_pushdef([lib], [m4_default([$3], [c])]) + m4_pushdef([flags], [m4_ifnblank([$3], [-l$3 $8], [$8])]) + HAVE_[]$1=no + SOX_CHECK_HEADERS([$2], [], [AC_CHECK_LIB(lib, [$4], + [HAVE_[]$1=yes], [], [$8 $$1[]_LIBS])], [], [$7]) + AS_CASE([$HAVE_[]$1], [yes], [ + AC_DEFINE([HAVE_]$1, [1], [Define if $4 exists in ]flags) + $1[]_LIBS="flags $$1[]_LIBS" + $5], [$6]) + AC_SUBST($1[_CFLAGS]) + AC_SUBST($1[_LIBS]) + m4_popdef([lib], [flags]) +]) + +dnl +dnl SOX_NEED_DL(VAL, DEP) +dnl +dnl Exit with an error message if VAL equals 'dyn' and dynamic loading +dnl is not available. +dnl +AC_DEFUN([SOX_NEED_DL], [ + AS_CASE([$1-$HAVE_LIBLTDL], [dyn-no], + [AC_MSG_ERROR([dynamic loading not available, needed by $2])]) +]) + +dnl +dnl SOX_ARG(TYPE, NAME, DESC, [TEST], [IF-YES], [IF-NO], [IF-FAIL], +dnl [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_ARG], [SOX_NAME_TAG([$2], [ + m4_pushdef([ATU], m4_toupper($1)) + m4_pushdef([ATL], m4_tolower($1)) + m4_pushdef([optdef], m4_default([$9], [yes])) + m4_pushdef([opts], m4_split([yes no $8])) + m4_pushdef([opts_help], m4_bpatsubst(m4_apply([m4_join], [[/], opts]), + \<optdef\>, m4_toupper(optdef))) + m4_pushdef([opts_sh], m4_apply([m4_join], [[|], opts])) + m4_indir(AC_ARG_[]ATU, [N], AS_HELP_STRING([--ATL-N], [$3 (opts_help)])) + HAVE_[]T=${ATL[]_[]L:-optdef} + AS_CASE([$HAVE_[]T], + [no], [], + [opts_sh], [$4], + [AC_MSG_ERROR([invalid value for --ATL-N])]) + AS_CASE([$ATL[]_[]L-$HAVE_[]T], + [no-*|-no], [$6], + [*-no], [$7], + [$5]) + AM_CONDITIONAL([HAVE_]T, [test $HAVE_[]T != no]) + m4_popdef([ATU], [ATL], [optdef], [opts], [opts_help], [opts_sh]) +])]) + +dnl +dnl SOX_ENABLE(NAME, DESC, [TEST], [IF-YES], [IF-NO], [IF-FAIL], +dnl [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_ENABLE], [ + SOX_ARG([enable], $@) +]) + +dnl +dnl SOX_WITH(NAME, DESC, [TEST], [IF-YES], [IF-NO], [IF-FAIL], +dnl [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_WITH], [ + SOX_ARG([with], $@) +]) + +dnl +dnl SOX_WITH_LIB(NAME, HEADERS, LIB, FUNC, [IF-FOUND], [IF-NOT-FOUND], +dnl [INCLUDES], [EXTRA-LIBS], [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_WITH_LIB], [SOX_NAME_TAG([$1], [ + SOX_WITH([$1], [Use N], + [AS_CASE([$HAVE_[]T], [yes|dyn], [sox_wl=$3], [sox_wl=$HAVE_[]T]) + SOX_CHECK_LIB([T], [$2], [$sox_wl], [$4], [], [], [$7], [$8])], + [$5], [$6], [AC_MSG_FAILURE([N not found])], + [$9 *], m4_argn([8], m4_shift2($@))) dnl BSD m4 can't count to 10 + SOX_REPORT([with_libs], [N], [$HAVE_]T) +])]) + +dnl +dnl SOX_DL_LIB(NAME, HEADERS, LIB, FUNC, [IF-STATIC], [IF-DL], [IF-NOT-FOUND], +dnl [EXTRA-HEADERS], [EXTRA-LIBS]) +dnl +AC_DEFUN([SOX_DL_LIB], [SOX_NAME_TAG([$1], [ + SOX_NEED_DL([$with_[]L], [--with-L=dyn]) + SOX_WITH_LIB([$1], [$2], [$3], [$4], [], [$7], [$8], [$9], [dyn]) + AS_CASE([$with_[]L-$HAVE_[]T], + [dyn-*], [AC_DEFINE([DL_]T, 1, [Define to dlopen() ]N) + HAVE_[]T=dyn; $6], + [*-yes], [$5]) +])]) + +dnl +dnl SOX_REQUIRE1(FEATURE, TAG, [IF-FOUND]) +dnl +AC_DEFUN([SOX_REQUIRE1], [ + AS_CASE([$HAVE_$1], + [yes|dyn], [$2_CFLAGS="$$2_CFLAGS $$1_CFLAGS"; $3]) + AS_CASE([$HAVE_$1], + [yes], [$2_LIBS="$$2_LIBS $$1_LIBS"]) +]) + +dnl +dnl SOX_REQUIRE(FEATURES, TAG, [IF-NOT-FOUND]) +dnl +AC_DEFUN([SOX_REQUIRE], [ + sox_req_found=no + m4_map_args_w([$1], [SOX_REQUIRE1(], [, $2, [sox_req_found=yes])]) + AS_CASE([$sox_req_found], [yes], [], [$3]) +]) + +dnl +dnl SOX_FMT(NAME, [TEST], [SECTION]) +dnl +dnl Add an optional format with corresponding --enable flag. +dnl +dnl Arguments: +dnl NAME Name of format, passed to SOX_NAME_TAG setting N and T +dnl TEST Test for prerequisites, must set HAVE_T to 'no' if not met +dnl SECTION Section format belongs to, default 'formats' +dnl +dnl Outputs: +dnl HAVE_T Set shell variable to 'yes', 'no', or 'dyn' +dnl AC_DEFINE and AM_CONDITIONAL true if not 'no' +dnl STATIC_T AC_DEFINE and AM_CONDITIONAL true if HAVE_T = 'yes' +dnl +AC_DEFUN([SOX_FMT], [SOX_NAME_TAG([$1], [ + m4_pushdef([section], m4_default([$3], [formats])) + SOX_NEED_DL([$with_[]L], [--enable-L=dyn]) + SOX_ENABLE([$1], [Enable N], [$2], + [AC_DEFINE([HAVE_]T, [1], [Define if ]N[ is enabled]) + sox_[]section="$sox_[]section L"], [], + [AC_MSG_FAILURE([N not available])], + [dyn], [${HAVE_FORMATS:-yes}]) + AS_CASE([$HAVE_[]T], + [yes], [AC_DEFINE([STATIC_]T, [1], [Define if ]N[ is linked in])]) + AC_SUBST(T[_CFLAGS]) + AC_SUBST(T[_LIBS]) + AM_CONDITIONAL([STATIC_]T, [test $HAVE_[]T = yes]) + SOX_REPORT(section, [N], [$HAVE_]T) + m4_popdef([section]) +])]) + +dnl +dnl SOX_FMT_REQ(NAME, FEATURES, [SECTION]) +dnl +AC_DEFUN([SOX_FMT_REQ], [ + SOX_FMT([$1], [SOX_REQUIRE([$2], [T], [HAVE_[]T=no])], [$3]) +]) + +dnl +dnl SOX_FMT_HEADERS(NAME, HEADERS, [DECL], [EXTRA-HEADERS], [SECTION]) +dnl +dnl Wrapper for SOX_FMT with SOX_CHECK_HEADERS as test. +dnl +AC_DEFUN([SOX_FMT_HEADERS], [ + SOX_FMT([$1], + [SOX_CHECK_HEADERS([$2], [$3], [], [HAVE_[]T=no], [$4])], [$5]) +]) + +dnl +dnl SOX_FMT_LIB(NAME, HEADERS, LIB, FUNC, [EXTRA-HEADERS], [EXTRA-LIBS], +dnl [SECTION]) +dnl +dnl Wrapper for SOX_FMT with SOX_CHECK_LIB as test. +dnl +AC_DEFUN([SOX_FMT_LIB], [ + SOX_FMT([$1], [ + SOX_CHECK_LIB([LIB[]T], [$2], [$3], [$4], [], [HAVE_[]T=no], [$5], [$6]) + T[]_CFLAGS=$LIB[]T[]_CFLAGS + T[]_LIBS=$LIB[]T[]_LIBS], [$7]) +]) + +dnl +dnl SOX_FMT_PKG(NAME, PKG) +dnl +AC_DEFUN([SOX_FMT_PKG], [ + SOX_FMT([$1], [PKG_CHECK_MODULES(T, [$2], [], [HAVE_[]T=no])]) +]) + +dnl +dnl SOX_REPORT_SECTION(NAME, TITLE, [FILTER]) +dnl +AC_DEFUN([SOX_REPORT_SECTION], [ + m4_append([sox_rep_sections], [$1], [ ]) + m4_define([sox_rep_title_$1], [$2]) + m4_define([sox_rep_filter_$1], m4_default([$3], [cat])) +]) + +dnl +dnl SOX_REPORT(SECTION, DESC, VAL) +dnl +AC_DEFUN([SOX_REPORT], [ + m4_append([sox_rep_text_$1], AS_HELP_STRING([$2], [$3]), m4_newline) +]) + +dnl +dnl SOX_REPORT_PRINT1(SECTION) +dnl +AC_DEFUN([SOX_REPORT_PRINT1], [ + echo; echo "sox_rep_title_$1" + sox_rep_filter_$1 <<EOF +sox_rep_text_$1 +EOF +]) + +dnl +dnl SOX_REPORT_PRINT +dnl +AC_DEFUN([SOX_REPORT_PRINT], [ + m4_map([SOX_REPORT_PRINT1], m4_split(sox_rep_sections)) +]) commit 944f549b9cfe32fe98abd6958296780ba6661f79 Author: Mans Rullgard <ma...@ma...> Date: Wed Aug 19 11:48:32 2020 +0100 build: simplify win32 glob selection Move the files to a subdirectory so the header can be activated by simply adding a -I flag, avoiding ugly ifdefs. Use this version if a native glob is missing and FindFirstFileA() exists. This is more accurate than matching the system name since some mingw versions do have a glob implementation. diff --git a/configure.ac b/configure.ac index 5d5a9866.... [truncated message content] |
From: Mans R. <ma...@us...> - 2020-08-27 09:26:50
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, master has been updated via a030e6958fdafd28a65dcc563981b378aaf87c09 (commit) from c2fda8f3e4f3623d1766d37078fb05d3ef6dbbe8 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit a030e6958fdafd28a65dcc563981b378aaf87c09 Author: Mans Rullgard <ma...@ma...> Date: Thu Aug 27 10:21:30 2020 +0100 libsox: fix missing version string [bug #306] The sox_version() function is incorrectly marked as pure. When built with clang, this causes the returned string to be blank. Dropping the pure attribute fixes this. diff --git a/src/sox.h b/src/sox.h index b13bad9c..bac50354 100644 --- a/src/sox.h +++ b/src/sox.h @@ -1621,7 +1621,7 @@ Client API: Returns version number string of libSoX, for example, "14.4.0". @returns The version number string of libSoX, for example, "14.4.0". */ -LSX_RETURN_VALID_Z LSX_RETURN_PURE +LSX_RETURN_VALID_Z char const * LSX_API sox_version(void); ----------------------------------------------------------------------- Summary of changes: src/sox.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- sox |
From: Mans R. <ma...@us...> - 2020-08-26 17:02:01
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, new-build has been updated discards ee301af34d0acdef725bffb9c4f40bbe5fa210e0 (commit) discards e504fe1f43230aee2ccc1ac5c0fdfd6e92dc5fa8 (commit) discards 5b82135e3f5737a079d804973c62c396b15ce3f8 (commit) discards 857d55a9c72b2d72c84a995ecfc780c0f379640a (commit) discards c29f5d181746a23432e81493ebd0202b1485c07b (commit) discards 6eeef9147666726250ffcc1877a19e2bf7600c23 (commit) discards 505421aa571d9a383a81ac33df1b1cb14911c915 (commit) discards 005f95a8a7bfe7eefe5e83430e588ff0a0181624 (commit) discards 46c1fe663ca22da1a63d4b924da255e8248eeaf8 (commit) discards d04651c022050df470e52f02c577d7c5d8153c96 (commit) discards d9362c987c01acb1dad91dd6f567242bdfa69899 (commit) discards ec5425bcb5d813e69111032e28a0a9149c356fed (commit) discards 1c1226ada62866e345ac691efb171fe30cfa4fbe (commit) discards cda1c30462a133e09c825e4c131d5fa920312b19 (commit) discards 4c926cb7f5058de364824bf3ae33f239b32611db (commit) discards be60b62e80142ec645f4c9bef5bc87913429f474 (commit) discards 2026ce5d12928aef16f4e0e8e1924195c158f9f6 (commit) discards 4f622249eacd7fde5d4399b58332f694ebcefdf4 (commit) discards 22f209a5dab1b8e20167bee669fac60162860192 (commit) discards 0b863fa4d6655e7aec615a10779446e80206909f (commit) discards 4ae736281e506f8cb091a200b8c5e4dfcffd2671 (commit) discards 7211eb068482daf8f313a6313c042319d16df5cd (commit) discards d2e8756359f6413b41a98c0be14e7ffc2dad209e (commit) discards cf6181d6e99d2a9378132b97b912e176d40ddc37 (commit) discards 236674c2428fbc28d44582ca9ba52601986c8502 (commit) discards 46a088868f5386e0aff4c008537cfab95b5cc007 (commit) discards 4ed2550a710828a6334e781f32f336093b2834ff (commit) discards e772786b0d9ae003df3d4c98f7260f4e40ce820c (commit) via 4249900fed6e61c719b5a0745be2b4509d13cd25 (commit) via 60d171738dc362f0ff235a8099f7947060f29fe3 (commit) via dbcc22a9f183886dc1c1ec39ae06ac85adf01556 (commit) via d60d6abf93ade7a51eedc91c7d0717e8318d7a26 (commit) via ab4e09e53b99e2574b31c90ca43de7db8a348c32 (commit) via 93e249635fa35238c78c753b79ca189278c2cb26 (commit) via 3187d953c541a8094eec8040177d7cfcb1601749 (commit) via 49af469bbd5e1eeb16d9b01c472dec1a197ff7ac (commit) via 6ce1fdf3a9a345f143595971217543ad2c3009c4 (commit) via b5bf6b8b7abc640f4f4e86be8b322a1dae64954a (commit) via f0443b0dc028117cb32bce7f56aea796bdce83ca (commit) via 4984cf47c889c3bbc9d71ea9b75bd0cc5c38ab89 (commit) via 996071bf5cade3b70cfc3388e82b9339e33cab3b (commit) via 66b9ff70284ee5e7f275ac729db4d5e695bc6fc5 (commit) via fdbbe3170698810a913453d3864214959b3c27ab (commit) via 8b34471f2b7042d14f74c82807cc420d2e44dbbf (commit) via 2e67e7a28cabf5d74e9eaaa940c883e84b3e95ab (commit) via 2770d3cb7b6698de1ea60d50a520f6c2af6a199e (commit) via 1ef6e6f8c15343c139464eefa017b9a1165d28e2 (commit) via 42d8e6d44b234a791b2cd3bd80d84541e534c906 (commit) via e4d99709e9b95a28084eac04ec986ed7e968ea85 (commit) via f9fc5e4ebf32f8466d345f3a715c0c46c4437f33 (commit) via 0599667322e1b6ca5ba7b5a34b4e19490eedbbce (commit) via 1ed3a0a05b44bc31d90533b2bf412d669ac274fd (commit) via 372ab7073fcc4b34f41dc212f789b4043c493362 (commit) via db9c789549c698679bd1069773d51915fa803249 (commit) via bb27004804a1dbb97d649b5b2567153581f2d4d3 (commit) via 1560707b4580c9f4efa22a9e39c85e03415410b5 (commit) via 458b58a3daa6d2b13e97839c853526f55a862fb3 (commit) via 204d7adaee9b4a78accfb3ce23fbad937fa0d4c8 (commit) via c2fda8f3e4f3623d1766d37078fb05d3ef6dbbe8 (commit) via 5e23e9c24393638380e8474fae1f42661c498967 (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (ee301af34d0acdef725bffb9c4f40bbe5fa210e0) \ N -- N -- N (4249900fed6e61c719b5a0745be2b4509d13cd25) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4249900fed6e61c719b5a0745be2b4509d13cd25 Author: Mans Rullgard <ma...@ma...> Date: Wed Aug 26 15:30:27 2020 +0100 build: do not link format modules against libsox The format modules should use symbols from the host process. Linking them against libsox can result in additional copies thereof being loaded with unpredictable results. Platforms that disallow unresolved symbols in shared libraries cannot support this feature. diff --git a/src/optional-fmts.am b/src/optional-fmts.am index 50bce818..098e76c6 100644 --- a/src/optional-fmts.am +++ b/src/optional-fmts.am @@ -10,7 +10,7 @@ else endif else libsox_fmt_alsa_la_SOURCES = alsa.c - libsox_fmt_alsa_la_LIBADD = libsox.la @ALSA_LIBS@ + libsox_fmt_alsa_la_LIBADD = @ALSA_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_alsa.la endif endif @@ -25,7 +25,7 @@ else endif else libsox_fmt_amr_nb_la_SOURCES = amr-nb.c amr.h - libsox_fmt_amr_nb_la_LIBADD = libsox.la @AMRNB_LIBS@ + libsox_fmt_amr_nb_la_LIBADD = @AMRNB_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_amr_nb.la endif endif @@ -40,7 +40,7 @@ else endif else libsox_fmt_amr_wb_la_SOURCES = amr-wb.c amr.h - libsox_fmt_amr_wb_la_LIBADD = libsox.la @AMRWB_LIBS@ + libsox_fmt_amr_wb_la_LIBADD = @AMRWB_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_amr_wb.la endif endif @@ -55,7 +55,7 @@ else endif else libsox_fmt_ao_la_SOURCES = ao.c - libsox_fmt_ao_la_LIBADD = libsox.la @AO_LIBS@ + libsox_fmt_ao_la_LIBADD = @AO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_ao.la endif endif @@ -70,7 +70,7 @@ else endif else libsox_fmt_coreaudio_la_SOURCES = coreaudio.c - libsox_fmt_coreaudio_la_LIBADD = libsox.la @COREAUDIO_LIBS@ + libsox_fmt_coreaudio_la_LIBADD = @COREAUDIO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_coreaudio.la endif endif @@ -85,7 +85,7 @@ else endif else libsox_fmt_flac_la_SOURCES = flac.c - libsox_fmt_flac_la_LIBADD = libsox.la @FLAC_LIBS@ + libsox_fmt_flac_la_LIBADD = @FLAC_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_flac.la endif endif @@ -100,7 +100,7 @@ else endif else libsox_fmt_gsm_la_SOURCES = gsm.c - libsox_fmt_gsm_la_LIBADD = libsox.la @LIBGSM_LIBS@ + libsox_fmt_gsm_la_LIBADD = @LIBGSM_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_gsm.la endif endif @@ -117,7 +117,7 @@ endif else libsox_fmt_lpc10_la_SOURCES = lpc10.c libsox_fmt_lpc10_la_CFLAGS = @LPC10_CFLAGS@ - libsox_fmt_lpc10_la_LIBADD = libsox.la @LPC10_LIBS@ + libsox_fmt_lpc10_la_LIBADD = @LPC10_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_lpc10.la endif endif @@ -132,7 +132,7 @@ else endif else libsox_fmt_mp3_la_SOURCES = mp3.c mp3-util.h - libsox_fmt_mp3_la_LIBADD = libsox.la @MP3_LIBS@ + libsox_fmt_mp3_la_LIBADD = @MP3_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_mp3.la endif endif @@ -149,7 +149,7 @@ endif else libsox_fmt_opus_la_SOURCES = opus.c libsox_fmt_opus_la_CFLAGS = @OPUS_CFLAGS@ - libsox_fmt_opus_la_LIBADD = libsox.la @OPUS_LIBS@ + libsox_fmt_opus_la_LIBADD = @OPUS_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_opus.la endif endif @@ -159,7 +159,6 @@ if STATIC_OSS libsox_la_SOURCES += oss.c else libsox_fmt_oss_la_SOURCES = oss.c - libsox_fmt_oss_la_LIBADD = libsox.la pkglib_LTLIBRARIES += libsox_fmt_oss.la endif endif @@ -174,7 +173,7 @@ else endif else libsox_fmt_pulseaudio_la_SOURCES = pulseaudio.c - libsox_fmt_pulseaudio_la_LIBADD = libsox.la @PULSEAUDIO_LIBS@ + libsox_fmt_pulseaudio_la_LIBADD = @PULSEAUDIO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_pulseaudio.la endif endif @@ -189,7 +188,7 @@ else endif else libsox_fmt_waveaudio_la_SOURCES = waveaudio.c - libsox_fmt_waveaudio_la_LIBADD = libsox.la @WAVEAUDIO_LIBS@ + libsox_fmt_waveaudio_la_LIBADD = @WAVEAUDIO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_waveaudio.la endif endif @@ -205,7 +204,7 @@ else endif else libsox_fmt_sndio_la_SOURCES = sndio.c - libsox_fmt_sndio_la_LIBADD = libsox.la @SNDIO_LIBS@ + libsox_fmt_sndio_la_LIBADD = @SNDIO_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_sndio.la endif endif @@ -215,7 +214,6 @@ if STATIC_SUNAUDIO libsox_la_SOURCES += sunaudio.c else libsox_fmt_sunau_la_SOURCES = sunaudio.c - libsox_fmt_sunau_la_LIBADD = libsox.la pkglib_LTLIBRARIES += libsox_fmt_sunau.la endif endif @@ -230,7 +228,7 @@ else endif else libsox_fmt_vorbis_la_SOURCES = vorbis.c - libsox_fmt_vorbis_la_LIBADD = libsox.la @OGGVORBIS_LIBS@ + libsox_fmt_vorbis_la_LIBADD = @OGGVORBIS_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_vorbis.la endif endif @@ -245,7 +243,7 @@ else endif else libsox_fmt_wavpack_la_SOURCES = wavpack.c - libsox_fmt_wavpack_la_LIBADD = libsox.la @WAVPACK_LIBS@ + libsox_fmt_wavpack_la_LIBADD = @WAVPACK_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_wavpack.la endif endif @@ -263,34 +261,34 @@ endif else libsox_fmt_sndfile_la_SOURCES = sndfile.c libsox_fmt_sndfile_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_sndfile_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_sndfile_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_caf_la_SOURCES = caf.c sndfile.c libsox_fmt_caf_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_caf_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_caf_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_mat4_la_SOURCES = mat4.c sndfile.c libsox_fmt_mat4_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_mat4_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_mat4_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_mat5_la_SOURCES = mat5.c sndfile.c libsox_fmt_mat5_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_mat5_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_mat5_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_paf_la_SOURCES = paf.c sndfile.c libsox_fmt_paf_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_paf_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_paf_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_fap_la_SOURCES = fap.c sndfile.c libsox_fmt_fap_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_fap_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_fap_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_w64_la_SOURCES = w64.c sndfile.c libsox_fmt_w64_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_w64_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_w64_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_xi_la_SOURCES = xi.c sndfile.c libsox_fmt_wi_la_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_xi_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_xi_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_pvf_la_SOURCES = pvf.c sndfile.c libsox_fmt_pvf_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_pvf_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_pvf_la_LIBADD = @LIBSNDFILE_LIBS@ libsox_fmt_sd2_la_SOURCES = sd2.c sndfile.c libsox_fmt_sd2_CFLAGS = @LIBSNDFILE_CFLAGS@ -libsox_fmt_sd2_la_LIBADD = libsox.la @LIBSNDFILE_LIBS@ +libsox_fmt_sd2_la_LIBADD = @LIBSNDFILE_LIBS@ pkglib_LTLIBRARIES += libsox_fmt_sndfile.la libsox_fmt_caf.la libsox_fmt_mat4.la libsox_fmt_mat5.la libsox_fmt_paf.la libsox_fmt_fap.la libsox_fmt_w64.la libsox_fmt_xi.la libsox_fmt_pvf.la libsox_fmt_sd2.la endif endif commit 60d171738dc362f0ff235a8099f7947060f29fe3 Author: Mans Rullgard <ma...@ma...> Date: Tue Aug 25 19:48:07 2020 +0100 build: replace exported symbols regex with a list Replace the hideous exported symbols regex with a simple list. The regex is completely unreadable and causes build errors on Solaris. diff --git a/src/Makefile.am b/src/Makefile.am index c4cd6c71..f30402fd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -87,7 +87,9 @@ endif libsox_la_CFLAGS = libsox_la_LDFLAGS = -no-undefined -version-info @SHLIB_VERSION@ \ - -export-symbols-regex '^(sox_.*|lsx_(([cm]|re)alloc.*|check_read_params|(close|open)_dllibrary|(debug(_more|_most)?|fail|report|warn)_impl|eof|error|fail_errno|filelength|find_(enum_(text|value)|file_extension)|flush|getopt(_init)?|lpc10_(create_(de|en)coder_state|(de|en)code)|raw(read|write)|read(_b_buf|buf|chars)|rewind|seeki|sigfigs3p?|strcasecmp|strdup|tell|unreadb|write(b|_b_buf|buf|s)))$$' + -export-symbols $(srcdir)/libsox.sym + +EXTRA_libsox_la_DEPENDENCIES = $(srcdir)/libsox.sym if HAVE_LIBLTDL libsox_la_CFLAGS += $(LIBLTDL_CFLAGS) diff --git a/src/libsox.sym b/src/libsox.sym new file mode 100644 index 00000000..8e217083 --- /dev/null +++ b/src/libsox.sym @@ -0,0 +1,95 @@ +lsx_calloc +lsx_check_read_params +lsx_close_dllibrary +lsx_debug_impl +lsx_debug_more_impl +lsx_debug_most_impl +lsx_eof +lsx_error +lsx_fail_errno +lsx_fail_impl +lsx_filelength +lsx_find_enum_text +lsx_find_enum_value +lsx_find_file_extension +lsx_flush +lsx_getopt +lsx_getopt_init +lsx_lpc10_create_decoder_state +lsx_lpc10_create_encoder_state +lsx_lpc10_decode +lsx_lpc10_encode +lsx_malloc +lsx_open_dllibrary +lsx_rawread +lsx_rawwrite +lsx_read_b_buf +lsx_readbuf +lsx_readchars +lsx_realloc +lsx_realloc_array +lsx_report_impl +lsx_rewind +lsx_seeki +lsx_sigfigs3 +lsx_sigfigs3p +lsx_strcasecmp +lsx_strdup +lsx_tell +lsx_unreadb +lsx_warn_impl +lsx_write_b_buf +lsx_writeb +lsx_writebuf +lsx_writes +sox_add_effect +sox_append_comment +sox_append_comments +sox_basename +sox_close +sox_copy_comments +sox_create_effect +sox_create_effects_chain +sox_delete_comments +sox_delete_effect +sox_delete_effect_last +sox_delete_effects +sox_delete_effects_chain +sox_effect_options +sox_effects_clips +sox_find_comment +sox_find_effect +sox_find_format +sox_flow_effects +sox_format_init +sox_format_quit +sox_format_supports_encoding +sox_get_effect_fns +sox_get_effects_globals +sox_get_encodings_info +sox_get_format_fns +sox_get_globals +sox_init +sox_init_encodinginfo +sox_is_playlist +sox_num_comments +sox_open_mem_read +sox_open_mem_write +sox_open_memstream_write +sox_open_read +sox_open_write +sox_parse_playlist +sox_pop_effect_last +sox_precision +sox_push_effect_last +sox_quit +sox_read +sox_seek +sox_stop_effect +sox_strerror +sox_trim_clear_start +sox_trim_get_start +sox_version +sox_version_info +sox_write +sox_write_handler commit dbcc22a9f183886dc1c1ec39ae06ac85adf01556 Author: Mans Rullgard <ma...@ma...> Date: Wed Aug 26 13:14:44 2020 +0100 sox: use correct ifdefs for audio drivers Use the feature macros rather than those of specific headers. Fixes problems on systems where the headers exist but do not provide the relevant functionality. diff --git a/src/sox.c b/src/sox.c index 03f9571a..ec7406f8 100644 --- a/src/sox.c +++ b/src/sox.c @@ -45,24 +45,16 @@ #include <io.h> #endif +#ifdef HAVE_SUNAUDIO #ifdef HAVE_SUN_AUDIOIO_H #include <sun/audioio.h> - #define HAVE_AUDIOIO_H 1 -#else -#ifdef HAVE_SYS_AUDIOIO_H +#elif defined HAVE_SYS_AUDIOIO_H #include <sys/audioio.h> - #define HAVE_AUDIOIO_H 1 #endif #endif -#ifdef HAVE_SYS_SOUNDCARD_H +#ifdef HAVE_OSS #include <sys/soundcard.h> - #define HAVE_SOUNDCARD_H 1 -#else -#ifdef HAVE_MACHINE_SOUNDCARD_H - #include <machine/soundcard.h> - #define HAVE_SOUNDCARD_H 1 -#endif #endif #ifdef HAVE_SYS_TIME_H @@ -1305,7 +1297,7 @@ static int kbhit(void) #define kbhit() 0 #endif -#ifdef HAVE_SOUNDCARD_H +#ifdef HAVE_OSS #include <sys/ioctl.h> static void adjust_volume(int delta) { @@ -1326,7 +1318,7 @@ static void adjust_volume(int delta) if (vol1 == vol2) putc('\a', stderr); } -#elif defined(HAVE_AUDIOIO_H) +#elif defined HAVE_SUNAUDIO static void adjust_volume(int delta) { int vol1 = 0, vol2 = 0, fd = fileno((FILE*)ofile->ft->fp); commit d60d6abf93ade7a51eedc91c7d0717e8318d7a26 Author: Mans Rullgard <ma...@ma...> Date: Fri Aug 14 13:35:31 2020 +0100 build: rewrite most of configure using new macros Most of the checks are now a single macro call, making the configure script much easier to read. The use of --enable and --with flags has been streamlined. Optional libraries use --with-foo, some of them accepting the value 'dyn' to activate runtime dynamic loading. The optional formats use --enable, again with the value 'dyn' enabling dynamic loading. As before, the default behaviour is to detect libraries and enable support for available ones. If an explicitly enabled feature has a dependency that is missing or disabled, an error is reported. diff --git a/INSTALL b/INSTALL index 3e8e272e..170a5e70 100644 --- a/INSTALL +++ b/INSTALL @@ -53,17 +53,14 @@ To compile and install SoX (executables, libraries, manual pages) with a default configuration for your platform, run the following commands: ./configure - make -s + make make install -There should be no errors and few, if any, warnings during the `make --s' stage. Any warnings about pointer mismatch or conversion should +There should be no errors and few, if any, warnings during the `make' +stage. Any warnings about pointer mismatch or conversion should be treated with deep suspicion. -The `make install' command may require `root' priviliges; for example, -on some systems, the following modification to the command is needed: - - sudo make install +The `make install' command may require `root' priviliges. To run a selection of tests on the installed sox executable: @@ -81,8 +78,8 @@ Again, `root' priviliges may be needed at the install stages. -Custom build options on a POSIX system --------------------------------------- +Custom build options +-------------------- Selection of optional libraries and of other build options can be made by adding parameters to the `./configure' command line (above). Run @@ -104,61 +101,33 @@ For example, ./configure --with-distro='Super Linux OS 6.1' If any libraries are installed in a non-standard locations in your -system then you can use the CPPFLAGS and LDFLAGS variables to allow -configure to find them. For example: - -./configure CPPFLAGS="-I/home/sox/include -I/usr/local/multimedia/include" LDFLAGS="-L/home/sox/lib -L/usr/local/multimedia/lib" - -If you are compiling under cygwin and would like to create a static -sox.exe using mingw libraries then you can use the following: - -./configure CC="gcc -mno-cygwin" --disable-shared - -The next cygwin example is used to build the cygwin version of SoX that is -distributed by the project. It tells gcc to prefer static libraries -over dynamic ones and to use some static libraries compiled manually -and installed under /usr/local. - -./configure LDFLAGS="-static -L/usr/local/lib" CPPFLAGS=-I/usr/local/include - -You can run "cygcheck.exe src/sox.exe" after compiling to see which -dynamic DLL's will be required to be distributed with the cygwin -executable. +system, the compiler and linker must be informed of this. Often, +environment variables can be used for this purpose. For example, if +using the GNU or Clang/LLVM toolchains, the following might be used in +a Bourne-compatible shell: -Alternatively, you can make use of the "cygbuild" script distributed -with SoX source that is used to automate all steps of building -a win32 package. "osxbuild" script is used to automate all steps -of building a MacOS X package. +export CPATH=/usr/local/include +export LIBRARY_PATH=/usr/local/lib -Newer versions of SoX include support for loading libraries for -file formats at runtime. The main usage of this feature is to -allow shipping SoX without dependencies on external libraries -that are not globally used or have redistribution restrictions. -If you experience problems with this then you may wish to disable -this feature: +For other compilers and shells, consult their respective manuals. -./configure --without-libltdl +Optional features +----------------- -Also, the default behavior even when libltdl is used is to link -all file format handlers into libsox as there is a performance -hit when dynamically loading external libraries. To force a format -handler to be built as a dynamically loaded module, pass "dyn" to -its --with-* option. For example, to build pulseaudio handler as -an external dynamic library: +Support for some file formats is optional and controlled by --enable-* +flags to configure. If the value "dyn" is passed to these flags, +e.g. --enable-flac=dyn, the corresponding code is built as a module +and loaded at runtime. -./configure --with-pulseaudio=dyn +Use of external libraries is controlled by --with-* flags. Some of +these accept the value "dyn" to enable runtime loading of the library. -A subset of external libraries can be configured to be dlopen()'ed -at run time instead of being linked in. This will allow one to -distribute a binary with optional features that only require -a user to install the missing libraries into their system. This -can be enabled using: +The runtime loading feature is mainly useful for distributing the +"sox" executable to systems that may not have all the external +libraries installed. ---enable-dl-lame ---enable-dl-mad ---enable-dl-sndfile ---enable-dl-amrnb ---enable-dl-amrwb +For a complete list of optional formats and libraries, including which +support runtime loading, refer to the "configure --help" output. Testing ------- diff --git a/configure.ac b/configure.ac index b9822490..16b52910 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,8 @@ LT_INIT([win32-dll]) AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=name], [Provide distribution name]), - AC_DEFINE_UNQUOTED(DISTRO, ["$with_distro"], [Distribution name])) + AC_DEFINE_UNQUOTED(DISTRO, ["$with_distro"], [Distribution name]) + SOX_REPORT([build], [distro name], [${with_distro:-unspecified}])) dnl Checks for programs. AC_PROG_CC @@ -58,6 +59,7 @@ AC_FUNC_FSEEKO dnl Check for OpenMP AC_OPENMP CFLAGS="$CFLAGS $OPENMP_CFLAGS" +SOX_REPORT([other], [OpenMP], [${OPENMP_CFLAGS:-no}]) if test "$ac_cv_header_glob_h" != yes; then AC_CHECK_FUNC([FindFirstFileA], [ @@ -66,470 +68,99 @@ if test "$ac_cv_header_glob_h" != yes; then fi AM_CONDITIONAL(HAVE_WIN32_GLOB, test "$HAVE_WIN32_GLOB" = yes) -AC_ARG_WITH(dyn-default,AS_HELP_STRING([--with-dyn-default],[Default to loading optional formats dynamically]),opt_default=dyn,opt_default=yes) - -AC_ARG_WITH(libltdl, - AS_HELP_STRING([--without-libltdl], - [Don't try to use libltdl for external dynamic library support]), - with_libltdl=$withval, with_libltdl=default) - -if test "$with_libltdl" = "default"; then - dnl Default to no libltdl support when building only static libraries - if test "$enable_shared" != "no"; then - using_libltdl=yes - else - using_libltdl=no - fi - with_libltdl="yes" -else - using_libltdl=$with_libltdl -fi - -dnl Check if ltdl should be enabled. -if test "$using_libltdl" != "no"; then - AC_CHECK_HEADERS(ltdl.h, - AC_CHECK_LIB(ltdl, lt_dlinit, LIBLTDL="$LIBLTDL -lltdl", - using_libltdl=no), using_libltdl=no) -fi -if test "$using_libltdl" = yes; then - AC_DEFINE([HAVE_LIBLTDL], 1, [Define to 1 if you have libltdl]) -fi -AM_CONDITIONAL(HAVE_LIBLTDL, test x$using_libltdl = xyes) -AC_SUBST(LIBLTDL) - - -dnl Check for magic library -AC_ARG_WITH(magic, - AS_HELP_STRING([--without-magic], - [Don't try to use magic])) -using_magic=no -if test "$with_magic" != "no"; then - using_magic=yes - AC_CHECK_HEADER(magic.h, - [AC_CHECK_LIB(magic, magic_open, MAGIC_LIBS="-lmagic",using_magic=no)], - using_magic=no) - if test "$with_magic" = "yes" -a "$using_magic" = "no"; then - AC_MSG_FAILURE([cannot find magic]) - fi -fi -if test "$using_magic" = yes; then - AC_DEFINE(HAVE_MAGIC, 1, [Define to 1 if you have magic.]) -fi -AM_CONDITIONAL(HAVE_MAGIC, test x$using_magic = xyes) -AC_SUBST(MAGIC_LIBS) - - - -dnl Check for png libraries -AC_ARG_WITH(png, - AS_HELP_STRING([--without-png], - [Don't try to use png])) -using_png=no -if test "$with_png" != "no"; then - AC_CHECK_HEADERS(png.h libpng/png.h,using_png=yes) - if test "$using_png" = "yes"; then - AC_CHECK_LIB(png, png_set_rows, PNG_LIBS="$PNG_LIBS -lpng -lz", - [AC_CHECK_LIB(png12, png_set_rows, - PNG_LIBS="$PNG_LIBS -lpng12 -lz", - using_png=no, -lz)], -lz) - fi - if test "$with_png" = "yes" -a "$using_png" = "no"; then - AC_MSG_FAILURE([cannot find png]) - fi -fi -if test "$using_png" = yes; then - AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have PNG.]) -fi -AM_CONDITIONAL(HAVE_PNG, test x$using_png = xyes) -AC_SUBST(PNG_LIBS) - - - -dnl Test for LADSPA -AC_ARG_WITH(ladspa, - AS_HELP_STRING([--without-ladspa], [Don't try to use LADSPA])) -using_ladspa=no -if test "$with_ladspa" != "no" -a "$using_libltdl" = "yes"; then - using_ladspa=yes - AC_DEFINE(HAVE_LADSPA_H, 1, [1 if should enable LADSPA]) -fi -LADSPA_PATH=${libdir}/ladspa -AC_ARG_WITH(ladspa-path, - AS_HELP_STRING([--with-ladspa-path], [Default search path for LADSPA plugins])) -AC_SUBST(LADSPA_PATH) - - - -dnl Check for MAD libraries -AC_ARG_WITH(mad, - AS_HELP_STRING([--without-mad], - [Don't try to use MAD (MP3 Audio Decoder)])) -using_mad=no -if test "$with_mad" != "no"; then - using_mad=yes - AC_CHECK_HEADERS(mad.h,, using_mad=no) - AC_MSG_CHECKING([whether to dlopen mad]) - AC_ARG_ENABLE(dl_mad, - AS_HELP_STRING([--enable-dl-mad], [Dlopen mad instead of linking in.]), - enable_dl_mad=$enableval, enable_dl_mad=no) - AC_MSG_RESULT($enable_dl_mad) - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_mad" = "xyes"; then - AC_DEFINE(DL_MAD, 1, [Define to dlopen() mad.]) - else - enable_dl_mad="no" - AC_CHECK_LIB(mad, mad_stream_buffer, MP3_LIBS="$MP3_LIBS -lmad",using_mad=no) - if test "$with_mad" = "yes" -a "$using_mad" = "no"; then - AC_MSG_FAILURE([cannot find libmad]) - fi - fi -fi - - - -dnl Check for id3tag libraries -AC_ARG_WITH(id3tag, - AS_HELP_STRING([--without-id3tag], - [Don't try to use id3tag])) -using_id3tag=no -if test "$with_id3tag" != "no"; then - using_id3tag=yes - AC_CHECK_HEADER(id3tag.h, - [AC_CHECK_LIB(id3tag, id3_file_open, MP3_LIBS="$MP3_LIBS -lid3tag -lz",using_id3tag=no, -lz)], - using_id3tag=no) - if test "$with_id3tag" = "yes" -a "$using_id3tag" = "no"; then - AC_MSG_FAILURE([cannot find id3tag]) - fi -fi -if test "$using_id3tag" = yes; then - AC_DEFINE(HAVE_ID3TAG, 1, [Define to 1 if you have id3tag.]) -fi -AM_CONDITIONAL(HAVE_ID3TAG, test x$using_id3tag = xyes) - - - -dnl Check for LAME library. -AC_ARG_WITH(lame, - AS_HELP_STRING([--without-lame], - [Don't try to use LAME (LAME Ain't an MP3 Encoder)])) -using_lame=no -if test "$with_lame" != "no"; then - using_lame=yes - AC_MSG_CHECKING([whether to dlopen lame]) - AC_ARG_ENABLE(dl_lame, - AS_HELP_STRING([--enable-dl-lame], [Dlopen lame instead of linking in.]), - enable_dl_lame=$enableval, enable_dl_lame=no) - AC_MSG_RESULT($enable_dl_lame) - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_lame" = "xyes"; then - AC_DEFINE(DL_LAME, 1, [Define to dlopen() lame.]) - else - enable_dl_lame="no" - AC_CHECK_HEADERS(lame/lame.h,, - [AC_CHECK_HEADERS(lame.h, [], using_lame=no)]) - AC_CHECK_LIB(mp3lame, lame_get_lametag_frame, MP3_LIBS="$MP3_LIBS -lmp3lame", using_lame=no) - if test "$with_lame" = "yes" -a "$using_lame" = "no"; then - AC_MSG_FAILURE([cannot find LAME]) - fi - fi -fi - - - -dnl Check for Twolame library -AC_ARG_WITH(twolame, - AS_HELP_STRING([--without-twolame], - [Don't try to use Twolame (MP2 Audio Encoder)])) -using_twolame=no -if test "$with_twolame" != "no"; then - using_twolame=yes - AC_CHECK_HEADERS(twolame.h,, using_twolame=no) - AC_MSG_CHECKING([whether to dlopen twolame]) - AC_ARG_ENABLE(dl_twolame, - AS_HELP_STRING([--enable-dl-twolame], [Dlopen twolame instead of linking in.]), - enable_dl_twolame=$enableval, enable_dl_twolame=no) - AC_MSG_RESULT($enable_dl_twolame) - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_twolame" = "xyes"; then - AC_DEFINE(DL_TWOLAME, 1, [Define to dlopen() libtwolame.]) - else - enable_dl_twolame="no" - AC_CHECK_LIB(twolame, twolame_init, MP3_LIBS="$MP3_LIBS -ltwolame",using_twolame=no) - if test "$with_twolame" = "yes" -a "$using_twolame" = "no"; then - AC_MSG_FAILURE([cannot find libtwolame]) - fi - fi -fi - -# Check for libgsm -HAVE_LIBGSM=yes -AC_CHECK_HEADERS(gsm/gsm.h, , - [AC_CHECK_HEADERS(gsm.h, , HAVE_LIBGSM=no)]) - AC_CHECK_LIB(gsm, gsm_create, [ - AC_DEFINE(HAVE_LIBGSM, 1, [Define if libgsm is available]) - LIBGSM_LIBS="$LIBGSM_LIBS -lgsm"], HAVE_LIBGSM=no) -AC_SUBST(LIBGSM_LIBS) - - - -# Check for liblpc10 -found_liblpc10=yes -AC_CHECK_HEADERS(lpc10.h, , - [AC_CHECK_HEADERS(lpc10.h, ,found_liblpc10=no)]) - AC_CHECK_LIB(lpc10, create_lpc10_encoder_state, LPC10_LIBS="$LPC10_LIBS -llpc10", found_liblpc10=no) -if test "$found_liblpc10" = yes; then - AC_DEFINE(HAVE_LIBLPC10, 1, [Define if you are using an external liblpc10]) -else - LPC10_CFLAGS='-I${top_srcdir}/lpc10' - LPC10_LIBS=../lpc10/liblpc10.la -fi -AM_CONDITIONAL(HAVE_LIBLPC10, test x$found_liblpc10 = xyes) - - - -# Check for Ogg Vorbis -AC_OPTIONAL_FORMAT(oggvorbis, OGGVORBIS, [AC_CHECK_HEADER(vorbis/codec.h, - [AC_CHECK_LIB(ogg, ogg_packet_clear, OGGVORBIS_LIBS="$OGGVORBIS_LIBS -logg", using_oggvorbis=no) - AC_CHECK_LIB(vorbis, vorbis_analysis_headerout, OGGVORBIS_LIBS="-lvorbis $OGGVORBIS_LIBS", using_oggvorbis=no, $OGGVORBIS_LIBS) - AC_CHECK_LIB(vorbisfile, ov_clear, OGGVORBIS_LIBS="-lvorbisfile $OGGVORBIS_LIBS", using_oggvorbis=no, $OGGVORBIS_LIBS) - AC_CHECK_LIB(vorbisenc, vorbis_encode_init_vbr, OGGVORBIS_LIBS="-lvorbisenc $OGGVORBIS_LIBS", using_oggvorbis=no, $OGGVORBIS_LIBS)], - using_oggvorbis=no)]) - -# Check for Opus -AC_OPTIONAL_FORMAT(opus, OPUS, - [PKG_CHECK_MODULES(OPUS, [opusfile], [], using_opus=no)], - using_opus=no) - - -dnl Check for FLAC library -AC_OPTIONAL_FORMAT(flac, FLAC, - [PKG_CHECK_MODULES([FLAC], [flac], [], [using_flac=no])]) - - -tmp_using_amrwb=no -AC_CHECK_HEADERS(opencore-amrwb/dec_if.h, - [AC_CHECK_LIB(opencore-amrwb, D_IF_init, - [OPENCORE_AMRWB_LIBS="$OPENCORE_AMRWB_LIBS -lopencore-amrwb"; tmp_using_amrwb=$opt_default])]) -AC_CHECK_HEADERS(vo-amrwbenc/enc_if.h, - [AC_CHECK_LIB(vo-amrwbenc, E_IF_init, - [VO_AMRWBENC_LIBS="$VO_AMRWBENC_LIBS -lvo-amrwbenc"; tmp_using_amrwb=$opt_default])]) -AC_ARG_ENABLE(dl_opencore_amrwb, - AS_HELP_STRING([--enable-dl-opencore-amrwb], - [Dlopen opencore-amrbw instead of linking in.])) -AC_ARG_ENABLE(dl_vo_amrwbenc, - AS_HELP_STRING([--enable-dl-vo-amrwbenc], - [Dlopen vo-amrbwenc instead of linking in.])) -if test "$using_libltdl" != "yes"; then - enable_dl_opencore_amrwb=no - enable_dl_vo_amrwbenc=no -fi -if test "$enable_dl_opencore_amrwb" = "yes"; then - AC_DEFINE(DL_OPENCORE_AMRWB, 1, [Define to dlopen() opencore-amrwb.]) -else - AMRWB_LIBS="$AMRWB_LIBS $OPENCORE_AMRWB_LIBS" -fi -if test "$enable_dl_vo_amrwbenc" = "yes"; then - AC_DEFINE(DL_VO_AMRWBENC, 1, [Define to dlopen() vo-amrwbenc.]) -else - AMRWB_LIBS="$AMRWB_LIBS $VO_AMRWBENC_LIBS" -fi -AC_OPTIONAL_FORMAT(amrwb, AMRWB, [using_amrwb=$tmp_using_amrwb]) - -dnl When enable_dl_amrnb, do not let add libraries to be linked in -dnl since they will be dlopen()'ed instead. -ac_sox_save_AMRNB_LIBS="$AMRNB_LIBS" -tmp_using_amrnb=$opt_default -AC_CHECK_HEADERS(opencore-amrnb/interf_dec.h, - [AC_CHECK_LIB(opencore-amrnb, Decoder_Interface_init, - AMRNB_LIBS="$AMRNB_LIBS -lopencore-amrnb", tmp_using_amrnb=no)], - [tmp_using_amrnb=no]) -AC_ARG_ENABLE(dl_opencore_amrnb, - AS_HELP_STRING([--enable-dl-opencore-amrnb], - [Dlopen opencore-amrnb instead of linking in.])) -if test "$using_libltdl" = "yes" -a "$enable_dl_opencore_amrnb" = "yes"; then - AC_DEFINE(DL_OPENCORE_AMRNB, 1, [Define to dlopen() opencore-amrnb.]) - dnl When enable_dl_amrnb, do not let SOX_PATH_AMRNB add libraries - dnl to be linked in (since they will be dlopen()'ed instead). - AMRNB_LIBS="$ac_sox_save_AMRNB_LIBS" - dnl Force to using regardless if headers or libraries were found. - tmp_using_amrnb=yes -else - enable_dl_opencore_amrnb="no" -fi -AC_OPTIONAL_FORMAT(amrnb, AMRNB, [using_amrnb=$tmp_using_amrnb]) - - -AC_OPTIONAL_FORMAT(wavpack, WAVPACK, [AC_CHECK_HEADER(wavpack/wavpack.h, [AC_CHECK_LIB(wavpack, WavpackGetSampleRate, WAVPACK_LIBS="$WAVPACK_LIBS -lwavpack",using_wavpack=no)], using_wavpack=no)]) - - - -AC_OPTIONAL_FORMAT(sndio, SNDIO, [AC_CHECK_HEADER(sndio.h, [AC_CHECK_LIB(sndio, sio_open, SNDIO_LIBS="$SNDIO_LIBS -lsndio",using_sndio=no)], using_sndio=no)]) - - - -AC_OPTIONAL_FORMAT(coreaudio, COREAUDIO, [AC_CHECK_HEADER(CoreAudio/CoreAudio.h, [COREAUDIO_LIBS="$COREAUDIO_LIBS -Wl,-framework,CoreAudio"], using_coreaudio=no)]) - - - -AC_OPTIONAL_FORMAT(alsa, ALSA, [AC_CHECK_HEADER(alsa/asoundlib.h, [AC_CHECK_LIB(asound, snd_pcm_open, ALSA_LIBS="$ALSA_LIBS -lasound",using_alsa=no)], using_alsa=no)]) - - - -AC_OPTIONAL_FORMAT(ao, AO, [AC_CHECK_HEADER(ao/ao.h, [AC_CHECK_LIB(ao, ao_play, AO_LIBS="$AO_LIBS -lao",using_ao=no)], using_ao=no)]) - - - -AC_OPTIONAL_FORMAT(pulseaudio, PULSEAUDIO, [AC_CHECK_HEADER(pulse/simple.h, [AC_CHECK_LIB(pulse, pa_simple_new, PULSEAUDIO_LIBS="$PULSEAUDIO_LIBS -lpulse -lpulse-simple",using_pulseaudio=no,"-lpulse-simple")], using_pulseaudio=no)]) - - -AC_OPTIONAL_FORMAT(waveaudio, WAVEAUDIO, [AC_CHECK_HEADER(mmsystem.h, [WAVEAUDIO_LIBS="$WAVEAUDIO_LIBS -lwinmm"], using_waveaudio=no, [[#include <windows.h>]])]) - -dnl When enable_dl_sndfile, do not let SOX_PATH_SNDFILE add libraries -dnl to be linked in (since they will be dlopen()'ed instead). -ac_sox_save_SNDFILE_LIBS="$LIBSNDFILE_LIBS" -SOX_PATH_SNDFILE(tmp_using_sndfile=$opt_default, tmp_using_sndfile=no) -AC_ARG_ENABLE(dl_sndfile, - AS_HELP_STRING([--enable-dl-sndfile], - [Dlopen sndfile instead of linking in.]), - enable_dl_sndfile=$enableval, enable_dl_sndfile=no) -if test "x$tmp_using_sndfile" = "xyes"; then - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_sndfile" = "xyes"; then - AC_DEFINE(DL_LIBSNDFILE, 1, [Define to dlopen() sndfile.]) - dnl When enable_dl_sndfile, do not let SOX_PATH_SNDFILE add libraries - dnl to be linked in (since they will be dlopen()'ed instead). - LIBSNDFILE_LIBS="$ac_sox_save_SNDFILE_LIBS" - else - enable_dl_sndfile="no" - fi -fi -AC_OPTIONAL_FORMAT(sndfile, SNDFILE, [using_sndfile=$tmp_using_sndfile]) - - - -AC_OPTIONAL_FORMAT(oss, OSS, [AC_CHECK_HEADERS(sys/soundcard.h,, using_oss=no)]) - - - -AC_OPTIONAL_FORMAT(sunaudio, SUNAUDIO, [AC_CHECK_HEADERS(sys/audioio.h,, - [AC_CHECK_HEADERS(sun/audioio.h,, using_sunaudio=no)])]) - - - -# MP2/MP3 format depends on libmad || LAME || twolame -AC_OPTIONAL_FORMAT(mp3, MP3, [ - if test "$using_mad" != yes -a "$using_lame" != yes -a "$using_twolame" != yes; then - using_mp3=no - fi]) - - - -# GSM format depends on libgsm -AC_OPTIONAL_FORMAT(gsm, GSM, [using_gsm=$HAVE_LIBGSM]) - - - -# LPC10 format depends on liblpc10 -# No need to check; LPC10 is always found -AC_OPTIONAL_FORMAT(lpc10, LPC10) - - - -dnl Check if we want to disable all symlinks -AC_MSG_CHECKING([whether to enable symlinks]) -AC_ARG_ENABLE(symlinks, - AS_HELP_STRING([--disable-symlinks], [Don't make any symlinks to sox.]),,enable_symlinks=yes) -AC_MSG_RESULT($enable_symlinks) - -if test "$enable_symlinks" = "yes"; then - SYMLINKS=soxi - if test "" \ - -o "$using_alsa" = yes \ - -o "$using_ao" = yes \ - -o "$using_coreaudio" = yes \ - -o "$using_oss" = yes \ - -o "$using_pulseaudio" = yes \ - -o "$using_sndio" = yes \ - -o "$using_sunaudio" = yes \ - -o "$using_waveaudio" = yes \ - ; then - SYMLINKS="$SYMLINKS play rec" - fi -fi -AC_SUBST(SYMLINKS) - -AM_CONDITIONAL(STATIC_LIBSOX_ONLY, test "$enable_shared" = "no" -a "$enable_static" = "yes") +SOX_WITH_LIB([libltdl], [ltdl.h], [ltdl], [lt_dlinit]) + +SOX_WITH([ladspa], [Enable LADSPA plugin support], + [SOX_NEED_DL([${with_ladspa:+dyn}], [--with-ladspa])], + [AC_DEFINE([HAVE_LADSPA_H], [1], [Define if LADSPA support is enabled]) + AS_CASE([$HAVE_LADSPA], [yes], [LADSPA_PATH='${libdir}/ladspa'], + [LADSPA_PATH=$HAVE_LADSPA])], [], [], [*], [$HAVE_LIBLTDL]) +AC_SUBST([LADSPA_PATH]) +SOX_REPORT([other], [LADSPA effect plugins], [$HAVE_LADSPA]) + +dnl Various libraries + +SOX_WITH_LIB([magic], [magic.h], [magic], [magic_open]) +SOX_CHECK_LIB([ZLIB], [zlib.h], [z], [uncompress]) +SOX_WITH_LIB([png], [png.h], [png], [png_set_rows], [], [], [], [$ZLIB_LIBS]) +SOX_WITH_LIB([id3tag], [id3tag.h], [id3tag], [id3_file_open]) +SOX_WITH_LIB([libgsm], [gsm/gsm.h gsm.h], [gsm], [gsm_create]) + +dnl Optional formats + +SOX_ENABLE([formats], [Default setting for optional formats], + [SOX_NEED_DL([$HAVE_FORMATS], [--enable-formats=dyn])], [], [], [], [dyn]) + +SOX_DL_LIB([opencore-amrnb], [opencore-amrnb/interf_dec.h], [opencore-amrnb], + [Decoder_Interface_init]) +SOX_FMT_REQ([amrnb], [OPENCORE_AMRNB]) + +SOX_DL_LIB([opencore-amrwb], [opencore-amrwb/dec_if.h], [opencore-amrwb], + [D_IF_init]) +SOX_DL_LIB([vo-amrwbenc], [vo-amrwbenc/enc_if.h], [vo-amrwbenc], [E_IF_init]) +SOX_FMT_REQ([amrwb], [OPENCORE_AMRWB VO_AMRWBENC]) + +SOX_FMT_PKG([flac], [flac]) +SOX_FMT_REQ([gsm], [LIBGSM]) + +SOX_CHECK_LIB([LIBLPC10], [lpc10.h], [lpc10], [create_lpc10_encoder_state], + [LPC10_LIBS="$LIBLPC10_LIBS"], + [LPC10_LIBS=../lpc10/liblpc10.la; LPC10_CFLAGS='-I${top_srcdir}/lpc10']) +AM_CONDITIONAL([HAVE_LIBLPC10], [test $HAVE_LIBLPC10 = yes]) +SOX_FMT([lpc10]) + +SOX_DL_LIB([mad], [mad.h], [mad], [mad_stream_buffer]) +SOX_DL_LIB([lame], [lame/lame.h lame.h], [mp3lame], [lame_init]) +SOX_DL_LIB([twolame], [twolame.h], [twolame], [twolame_init]) +SOX_FMT_REQ([mp3], [MAD LAME TWOLAME]) +MP3_LIBS="$MP3_LIBS $ID3TAG_LIBS" + +SOX_FMT_PKG([oggvorbis], [ogg vorbis vorbisenc vorbisfile]) +SOX_FMT_PKG([opus], [opusfile]) + +SOX_DL_LIB([libsndfile], [sndfile.h], [sndfile], [sf_open_virtual]) +SOX_FMT_REQ([sndfile], [LIBSNDFILE]) + +SOX_FMT_LIB([wavpack], [wavpack/wavpack.h], [wavpack], [WavpackGetSampleRate]) + +dnl Audio devices + +SOX_FMT_LIB([alsa], [alsa/asoundlib.h], [asound], [snd_pcm_open], [], [], + [devices]) +SOX_FMT_LIB([ao], [ao/ao.h], [ao], [ao_play], [], [], [devices]) +SOX_FMT_LIB([coreaudio], [CoreAudio/CoreAudio.h], [], [AudioDeviceStart], [], + [[-Wl,-framework,CoreAudio]], [devices]) +SOX_FMT_LIB([pulseaudio], [pulse/simple.h], [pulse], [pa_simple_new], [], + [-lpulse-simple], [devices]) +SOX_FMT_HEADERS([oss], [sys/soundcard.h], [SOUND_MIXER_MUTE], [], [devices]) +SOX_FMT_LIB([sndio], [sndio.h], [sndio], [sio_open], [], [], [devices]) +SOX_FMT_HEADERS([sunaudio], [sys/audioio.h sun/audioio.h], + [AUDIO_HWFEATURE_DUPLEX], [], [devices]) +SOX_FMT_LIB([waveaudio], [mmsystem.h], [winmm], [waveOutOpen], [windows.h], [], + [devices]) + +dnl Check if we want to create symlinks +AC_ARG_ENABLE([symlinks], + AS_HELP_STRING([--enable-symlinks], [Create soxi/play/rec links (YES/no)])) +AS_CASE([${enable_symlinks:=yes}], [yes], [ + SYMLINKS=soxi + AS_IF([test -n "$sox_devices"], [SYMLINKS="$SYMLINKS play rec"])]) +AC_SUBST([SYMLINKS]) +SOX_REPORT([build], [symlinks], [${SYMLINKS:-none}]) + +AM_CONDITIONAL(STATIC_LIBSOX_ONLY, test "$enable_shared" = "no") dnl Generate output files. AC_CONFIG_FILES(Makefile src/Makefile lpc10/Makefile sox.pc) AC_OUTPUT -if test "$using_lpc10" != "no"; then - if test "$found_liblpc10" = "yes"; then - lpc10_option="(external)" - else - lpc10_option="(in-tree)" - fi -fi +SOX_REPORT_SECTION([build], [Build options:]) +SOX_REPORT_SECTION([with_libs], [Optional libraries:], [sort]) +SOX_REPORT_SECTION([formats], [Optional formats:], [sort]) +SOX_REPORT_SECTION([devices], [Audio devices:], [sort]) +SOX_REPORT_SECTION([other], [Other options:]) +SOX_REPORT_PRINT -# Report configuration. -echo -echo "BUILD OPTIONS" -echo "Distro name ...............${with_distro:-unspecified}" -echo "Dynamic loading support....$using_libltdl" -echo "Pkg-config location........$pkgconfigdir" -echo "Symlinks enabled...........${SYMLINKS:-no}" -echo -echo "OPTIONAL DEVICE DRIVERS" -echo "ao (Xiph)..................$using_ao" -echo "alsa (Linux)...............$using_alsa" -echo "coreaudio (Mac OS X).......$using_coreaudio" -echo "sndio (OpenBSD)............$using_sndio" -echo "oss........................$using_oss" -echo "pulseaudio.................$using_pulseaudio" -echo "sunaudio...................$using_sunaudio" -echo "waveaudio (MS-Windows).....$using_waveaudio" -echo -echo "OPTIONAL FILE FORMATS" -echo "amrnb......................$using_amrnb" -if test "x$using_amrnb" = "xyes"; then -echo " dlopen amrnb..............${enable_dl_opencore_amrnb:-no}" -fi -echo "amrwb......................$using_amrwb" -if test "x$using_amrwb" = "xyes"; then -echo " dlopen opencore-amrwb.....${enable_dl_opencore_amrwb:-no}" -echo " dlopen vo-amrwbenc........${enable_dl_vo_amrwbenc:-no}" -fi -echo "flac.......................$using_flac" -echo "gsm........................$using_gsm" -echo "lpc10......................$using_lpc10 $lpc10_option" -echo "mp2/mp3....................$using_mp3" -echo " id3tag....................$using_id3tag" -echo " lame......................$using_lame" -if test "x$using_lame" = "xyes"; then -echo " dlopen lame...............$enable_dl_lame" -fi -echo " mad.......................$using_mad" -if test "x$using_mad" = "xyes"; then -echo " dlopen mad................$enable_dl_mad" -fi -echo " twolame...................$using_twolame" -if test "x$using_twolame" = "xyes"; then -echo " dlopen twolame............$enable_dl_twolame" -fi -echo "oggvorbis..................$using_oggvorbis" -echo "opus.......................$using_opus" -echo "sndfile....................$using_sndfile" -if test "x$using_sndfile" = "xyes"; then -echo " dlopen sndfile............$enable_dl_sndfile" -fi -echo "wavpack....................$using_wavpack" -echo -echo "OTHER OPTIONS" -echo "ladspa effects.............$using_ladspa" -echo "magic support..............$using_magic" -echo "png support................$using_png" -if test "x$OPENMP_CFLAGS" = "x"; then -echo "OpenMP support.............no" -else -echo "OpenMP support.............yes, $OPENMP_CFLAGS" -fi echo -echo "Configure finished. Do 'make -s && make install' to compile and install SoX." +echo "Configure finished. Run 'make' to compile SoX." echo diff --git a/m4/optional-fmt.m4 b/m4/optional-fmt.m4 deleted file mode 100644 index d0623c83..00000000 --- a/m4/optional-fmt.m4 +++ /dev/null @@ -1,49 +0,0 @@ -dnl SoX autoconf macro: optional format (c) 2009 ro...@us... -dnl -dnl This program is free software; you can redistribute it and/or modify it -dnl under the terms of the GNU General Public License as published by the -dnl Free Software Foundation; either version 2 of the License, or (at your -dnl option) any later version. -dnl -dnl This program is distributed in the hope that it will be useful, but -dnl WITHOUT ANY WARRANTY; without even the implied warranty of -dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -dnl Public License for more details. -dnl -dnl You should have received a copy of the GNU General Public License along -dnl with this program; if not, write to the Free Software Foundation, Inc., -dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -dnl $1 package name e.g. flac -dnl $2 package name in conditionals e.g. FLAC -dnl $3 using check - -AC_DEFUN([AC_OPTIONAL_FORMAT], - [AC_ARG_WITH($1, AC_HELP_STRING([--with-$1=dyn], [load $1 dynamically])) - using_$1=$with_$1 - if test "_$with_$1" = _dyn; then - if test $using_libltdl != yes; then - AC_MSG_FAILURE([not using libltdl; cannot load $1 dynamically]) - fi - elif test "_$with_$1" = _; then - using_$1=$opt_default - elif test "_$with_$1" != _yes -a "_$with_$1" != _no; then - AC_MSG_FAILURE([invalid selection --with-$1=$with_$1]) - fi - if test _$with_$1 != _no; then - $3 - if test _$with_$1 != _ -a $using_$1 = no; then - AC_MSG_FAILURE([cannot find $1]) - fi - fi - if test "$using_$1" != no; then - AC_DEFINE(HAVE_$2, 1, [Define to 1 if you have $1.]) - if test "$using_$1" = yes; then - AC_DEFINE(STATIC_$2, 1, [Define to 1 if you have static $1.]) - fi - fi - AM_CONDITIONAL(HAVE_$2, test $using_$1 != no) - AM_CONDITIONAL(STATIC_$2, test $using_$1 = yes) - AC_SUBST($2_CFLAGS) - AC_SUBST($2_LIBS)] -) diff --git a/m4/sndfile.m4 b/m4/sndfile.m4 deleted file mode 100644 index 8fc026c9..00000000 --- a/m4/sndfile.m4 +++ /dev/null @@ -1,65 +0,0 @@ -dnl SOX_PATH_SNDFILE -dnl Based off of shout.m4 from xiph package. -dnl cba...@us... 1-3-2007 -dnl -dnl Original Authors: -dnl Jack Moffitt <ja...@ic...> 08-06-2001 -dnl Rewritten for libshout 2 -dnl Brendan Cully <br...@xi...> 20030612 -dnl -# SOX_PATH_SNDFILE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -# Test for libsndfile, and define LIBSNDFILE_CFLAGS and LIBSNDFILE_LIBS -AC_DEFUN([SOX_PATH_SNDFILE], -[dnl -# Step 1: Use pkg-config if available -m4_ifdef([PKG_CHECK_MODULES], - [# PKG_CHECK_MODULES available - PKG_CHECK_MODULES(LIBSNDFILE, sndfile, have_sndfile="maybe", - have_sndfile="no")], - [# Step 2: use pkg-config manually if available - AC_PATH_PROG([PKGCONFIG], [pkg-config], [none]) - if test "$PKGCONFIG" != "none" && `$PKGCONFIG --exists sndfile` - then - LIBSNDFILE_CFLAGS=`$PKGCONFIG --cflags sndfile`" $ac_save_SNDFILE_CFLAGS $LIBSNDFILE_CFLAGS" - LIBSNDFILE_LIBS=`$PKGCONFIG --libs sndfile`" $ac_save_SNDFILE_LIBS $LIBSNDFILE_LIBS" - have_sndfile="maybe" - else - have_sndfile="no" - fi - ]) - -# Step 3: Even if pkg-config says its not installed, user may have -# manually installed libraries with no -kg-config support. -if test "$have_sndfile" = "no" -then - # As a last resort, just hope that header and ilbrary can - # be found in default paths and that it doesn't need - # to link against any other libraries. - LIBSNDFILE_LIBS="-lsndfile $LIBSNDFILE_LIBS" - have_sndfile="maybe" -fi - -# Even if pkg-config or similar told us how to find library, -# do a safety check. -if test "$have_sndfile" != "no" -then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $LIBSNDFILE_CFLAGS" - LIBS="$LIBS $LIBSNDFILE_LIBS" - AC_CHECK_HEADER([sndfile.h], [ - AC_DEFINE([HAVE_SNDFILE_H], 1, [Define if you have <sndfile.h>]) - AC_CHECK_FUNC([sf_open_virtual], [ - ifelse([$1], , :, [$1]) - have_sndfile="yes" - ]) - ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" -fi - -if test "$have_sndfile" != "yes" -then - ifelse([$2], , :, [$2]) -fi -])dnl SOX_PATH_SNDFILE diff --git a/src/Makefile.am b/src/Makefile.am index e0986584..c4cd6c71 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -90,8 +90,8 @@ libsox_la_LDFLAGS = -no-undefined -version-info @SHLIB_VERSION@ \ -export-symbols-regex '^(sox_.*|lsx_(([cm]|re)alloc.*|check_read_params|(close|open)_dllibrary|(debug(_more|_most)?|fail|report|warn)_impl|eof|error|fail_errno|filelength|find_(enum_(text|value)|file_extension)|flush|getopt(_init)?|lpc10_(create_(de|en)coder_state|(de|en)code)|raw(read|write)|read(_b_buf|buf|chars)|rewind|seeki|sigfigs3p?|strcasecmp|strdup|tell|unreadb|write(b|_b_buf|buf|s)))$$' if HAVE_LIBLTDL - libsox_la_CFLAGS += $(LTDLINCL) - libsox_la_LDFLAGS += $(LIBLTDL) + libsox_la_CFLAGS += $(LIBLTDL_CFLAGS) + libsox_la_LIBADD += $(LIBLTDL_LIBS) endif commit ab4e09e53b99e2574b31c90ca43de7db8a348c32 Author: Mans Rullgard <ma...@ma...> Date: Tue Aug 11 08:22:53 2020 +0100 build: add useful m4 macros diff --git a/m4/sox.m4 b/m4/sox.m4 new file mode 100644 index 00000000..f1d877ae --- /dev/null +++ b/m4/sox.m4 @@ -0,0 +1,286 @@ +dnl +dnl SOX_NAME_TAG(NAME-TAG, [BODY]) +dnl +dnl Define using m4_pushdef: +dnl N First word of NAME-TAG +dnl L N sanitised for use as shell variable +dnl T Second word of NAME-TAG, if present, else +dnl L converted to upper case +dnl +dnl If BODY is provided, substitute it and m4_popdef N, L, and T. +dnl Otherwise, leave these macros defined. +dnl +AC_DEFUN([SOX_NAME_TAG], [ + m4_pushdef([nt], m4_split(m4_normalize($1))) + m4_pushdef([N], m4_car(nt)) + m4_pushdef([L], m4_bpatsubst(N, [[^0-9A-Za-z]], [_])) + m4_pushdef([T], m4_default(m4_argn([2], nt), m4_toupper(L))) + m4_popdef([nt]) + m4_ifnblank([$2], [$2 m4_popdef([N], [L], [T])]) +]) + +dnl +dnl SOX_INCLUDE(HEADER) +dnl +dnl Expands to "#include <HEADER>" followed by a newline. +dnl +AC_DEFUN([SOX_INCLUDE], [[#include <]]$1[[> +]]) + +dnl +dnl SOX_CHECK_HEADERS(HEADERS, [DECL], [IF-FOUND], [IF-NOT-FOUND], +dnl [EXTRA-HEADERS]) +dnl +dnl Check for presence of headers. +dnl +dnl HEADERS: List of headers to try, stopping when one is found +dnl IF-FOUND: Action to take if one of HEADERS is found +dnl IF-NOT-FOUND: Action to take if none of HEADERS are found +dnl EXTRA-HEADERS: Additional headers to #include +dnl +dnl Outputs: +dnl HAVE_HEADER: Set with AC_DEFINE to 1 for the first header found +dnl +AC_DEFUN([SOX_CHECK_HEADERS], [ + sox_ch_found=no + AC_CHECK_HEADERS([$1], [sox_ch_found=$ac_header; break], [], + [m4_map([SOX_INCLUDE], m4_split([$5]))]) + AS_CASE([$sox_ch_found], [no], [$4], [m4_ifblank([$2], [$3], + [AC_CHECK_DECL([$2], [$3], [$4], [SOX_INCLUDE([$sox_ch_found])])])]) +]) + +dnl +dnl SOX_CHECK_LIB(TAG, HEADERS, LIB, FUNC, [IF-FOUND], [IF-NOT-FOUND], +dnl [EXTRA-HEADERS], [EXTRA-LIBS]) +dnl +dnl Check for presence of headers and library. +dnl +dnl Arguments: +dnl TAG Prefix/suffix for output variable +dnl HEADERS List of headers searched with SOX_CHECK_HEADERS +dnl LIB Name of library to check +dnl FUNC Name of function in library +dnl IF-FOUND Action to take on success +dnl IF-NOT-FOUND Action to take on failure +dnl EXTRA-HEADERS Passed to SOX_CHECK_HEADERS +dnl EXTRA-LIBS Additional libraries (-lLIB) and linker flags +dnl +dnl Outputs: +dnl HAVE_TAG AC_DEFINE to 1 if found +dnl Set shell variable to 'yes' on success, 'no' otherwise +dnl TAG_LIBS Add '-lLIB EXTRA-LIBS' to start of shell variable +dnl +AC_DEFUN([SOX_CHECK_LIB], [ + m4_pushdef([lib], [m4_default([$3], [c])]) + m4_pushdef([flags], [m4_ifnblank([$3], [-l$3 $8], [$8])]) + HAVE_[]$1=no + SOX_CHECK_HEADERS([$2], [], [AC_CHECK_LIB(lib, [$4], + [HAVE_[]$1=yes], [], [$8 $$1[]_LIBS])], [], [$7]) + AS_CASE([$HAVE_[]$1], [yes], [ + AC_DEFINE([HAVE_]$1, [1], [Define if $4 exists in ]flags) + $1[]_LIBS="flags $$1[]_LIBS" + $5], [$6]) + AC_SUBST($1[_CFLAGS]) + AC_SUBST($1[_LIBS]) + m4_popdef([lib], [flags]) +]) + +dnl +dnl SOX_NEED_DL(VAL, DEP) +dnl +dnl Exit with an error message if VAL equals 'dyn' and dynamic loading +dnl is not available. +dnl +AC_DEFUN([SOX_NEED_DL], [ + AS_CASE([$1-$HAVE_LIBLTDL], [dyn-no], + [AC_MSG_ERROR([dynamic loading not available, needed by $2])]) +]) + +dnl +dnl SOX_ARG(TYPE, NAME, DESC, [TEST], [IF-YES], [IF-NO], [IF-FAIL], +dnl [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_ARG], [SOX_NAME_TAG([$2], [ + m4_pushdef([ATU], m4_toupper($1)) + m4_pushdef([ATL], m4_tolower($1)) + m4_pushdef([optdef], m4_default([$9], [yes])) + m4_pushdef([opts], m4_split([yes no $8])) + m4_pushdef([opts_help], m4_bpatsubst(m4_apply([m4_join], [[/], opts]), + \<optdef\>, m4_toupper(optdef))) + m4_pushdef([opts_sh], m4_apply([m4_join], [[|], opts])) + m4_indir(AC_ARG_[]ATU, [N], AS_HELP_STRING([--ATL-N], [$3 (opts_help)])) + HAVE_[]T=${ATL[]_[]L:-optdef} + AS_CASE([$HAVE_[]T], + [no], [], + [opts_sh], [$4], + [AC_MSG_ERROR([invalid value for --ATL-N])]) + AS_CASE([$ATL[]_[]L-$HAVE_[]T], + [no-*|-no], [$6], + [*-no], [$7], + [$5]) + AM_CONDITIONAL([HAVE_]T, [test $HAVE_[]T != no]) + m4_popdef([ATU], [ATL], [optdef], [opts], [opts_help], [opts_sh]) +])]) + +dnl +dnl SOX_ENABLE(NAME, DESC, [TEST], [IF-YES], [IF-NO], [IF-FAIL], +dnl [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_ENABLE], [ + SOX_ARG([enable], $@) +]) + +dnl +dnl SOX_WITH(NAME, DESC, [TEST], [IF-YES], [IF-NO], [IF-FAIL], +dnl [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_WITH], [ + SOX_ARG([with], $@) +]) + +dnl +dnl SOX_WITH_LIB(NAME, HEADERS, LIB, FUNC, [IF-FOUND], [IF-NOT-FOUND], +dnl [INCLUDES], [EXTRA-LIBS], [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_WITH_LIB], [SOX_NAME_TAG([$1], [ + SOX_WITH([$1], [Use N], + [AS_CASE([$HAVE_[]T], [yes|dyn], [sox_wl=$3], [sox_wl=$HAVE_[]T]) + SOX_CHECK_LIB([T], [$2], [$sox_wl], [$4], [], [], [$7], [$8])], + [$5], [$6], [AC_MSG_FAILURE([N not found])], + [$9 *], m4_argn([8], m4_shift2($@))) dnl BSD m4 can't count to 10 + SOX_REPORT([with_libs], [N], [$HAVE_]T) +])]) + +dnl +dnl SOX_DL_LIB(NAME, HEADERS, LIB, FUNC, [IF-STATIC], [IF-DL], [IF-NOT-FOUND], +dnl [EXTRA-HEADERS], [EXTRA-LIBS]) +dnl +AC_DEFUN([SOX_DL_LIB], [SOX_NAME_TAG([$1], [ + SOX_NEED_DL([$with_[]L], [--with-L=dyn]) + SOX_WITH_LIB([$1], [$2], [$3], [$4], [], [$7], [$8], [$9], [dyn]) + AS_CASE([$with_[]L-$HAVE_[]T], + [dyn-*], [AC_DEFINE([DL_]T, 1, [Define to dlopen() ]N) + HAVE_[]T=dyn; $6], + [*-yes], [$5]) +])]) + +dnl +dnl SOX_REQUIRE1(FEATURE, TAG, [IF-FOUND]) +dnl +AC_DEFUN([SOX_REQUIRE1], [ + AS_CASE([$HAVE_$1], + [yes|dyn], [$2_CFLAGS="$$2_CFLAGS $$1_CFLAGS"; $3]) + AS_CASE([$HAVE_$1], + [yes], [$2_LIBS="$$2_LIBS $$1_LIBS"]) +]) + +dnl +dnl SOX_REQUIRE(FEATURES, TAG, [IF-NOT-FOUND]) +dnl +AC_DEFUN([SOX_REQUIRE], [ + sox_req_found=no + m4_map_args_w([$1], [SOX_REQUIRE1(], [, $2, [sox_req_found=yes])]) + AS_CASE([$sox_req_found], [yes], [], [$3]) +]) + +dnl +dnl SOX_FMT(NAME, [TEST], [SECTION]) +dnl +dnl Add an optional format with corresponding --enable flag. +dnl +dnl Arguments: +dnl NAME Name of format, passed to SOX_NAME_TAG setting N and T +dnl TEST Test for prerequisites, must set HAVE_T to 'no' if not met +dnl SECTION Section format belongs to, default 'formats' +dnl +dnl Outputs: +dnl HAVE_T Set shell variable to 'yes', 'no', or 'dyn' +dnl AC_DEFINE and AM_CONDITIONAL true if not 'no' +dnl STATIC_T AC_DEFINE and AM_CONDITIONAL true if HAVE_T = 'yes' +dnl +AC_DEFUN([SOX_FMT], [SOX_NAME_TAG([$1], [ + m4_pushdef([section], m4_default([$3], [formats])) + SOX_NEED_DL([$with_[]L], [--enable-L=dyn]) + SOX_ENABLE([$1], [Enable N], [$2], + [AC_DEFINE([HAVE_]T, [1], [Define if ]N[ is enabled]) + sox_[]section="$sox_[]section L"], [], + [AC_MSG_FAILURE([N not available])], + [dyn], [${HAVE_FORMATS:-yes}]) + AS_CASE([$HAVE_[]T], + [yes], [AC_DEFINE([STATIC_]T, [1], [Define if ]N[ is linked in])]) + AC_SUBST(T[_CFLAGS]) + AC_SUBST(T[_LIBS]) + AM_CONDITIONAL([STATIC_]T, [test $HAVE_[]T = yes]) + SOX_REPORT(section, [N], [$HAVE_]T) + m4_popdef([section]) +])]) + +dnl +dnl SOX_FMT_REQ(NAME, FEATURES, [SECTION]) +dnl +AC_DEFUN([SOX_FMT_REQ], [ + SOX_FMT([$1], [SOX_REQUIRE([$2], [T], [HAVE_[]T=no])], [$3]) +]) + +dnl +dnl SOX_FMT_HEADERS(NAME, HEADERS, [DECL], [EXTRA-HEADERS], [SECTION]) +dnl +dnl Wrapper for SOX_FMT with SOX_CHECK_HEADERS as test. +dnl +AC_DEFUN([SOX_FMT_HEADERS], [ + SOX_FMT([$1], + [SOX_CHECK_HEADERS([$2], [$3], [], [HAVE_[]T=no], [$4])], [$5]) +]) + +dnl +dnl SOX_FMT_LIB(NAME, HEADERS, LIB, FUNC, [EXTRA-HEADERS], [EXTRA-LIBS], +dnl [SECTION]) +dnl +dnl Wrapper for SOX_FMT with SOX_CHECK_LIB as test. +dnl +AC_DEFUN([SOX_FMT_LIB], [ + SOX_FMT([$1], [ + SOX_CHECK_LIB([LIB[]T], [$2], [$3], [$4], [], [HAVE_[]T=no], [$5], [$6]) + T[]_CFLAGS=$LIB[]T[]_CFLAGS + T[]_LIBS=$LIB[]T[]_LIBS], [$7]) +]) + +dnl +dnl SOX_FMT_PKG(NAME, PKG) +dnl +AC_DEFUN([SOX_FMT_PKG], [ + SOX_FMT([$1], [PKG_CHECK_MODULES(T, [$2], [], [HAVE_[]T=no])]) +]) + +dnl +dnl SOX_REPORT_SECTION(NAME, TITLE, [FILTER]) +dnl +AC_DEFUN([SOX_REPORT_SECTION], [ + m4_append([sox_rep_sections], [$1], [ ]) + m4_define([sox_rep_title_$1], [$2]) + m4_define([sox_rep_filter_$1], m4_default([$3], [cat])) +]) + +dnl +dnl SOX_REPORT(SECTION, DESC, VAL) +dnl +AC_DEFUN([SOX_REPORT], [ + m4_append([sox_rep_text_$1], AS_HELP_STRING([$2], [$3]), m4_newline) +]) + +dnl +dnl SOX_REPORT_PRINT1(SECTION) +dnl +AC_DEFUN([SOX_REPORT_PRINT1], [ + echo; echo "sox_rep_title_$1" + sox_rep_filter_$1 <<EOF +sox_rep_text_$1 +EOF +]) + +dnl +dnl SOX_REPORT_PRINT +dnl +AC_DEFUN([SOX_REPORT_PRINT], [ + m4_map([SOX_REPORT_PRINT1], m4_split(sox_rep_sections)) +]) commit 93e249635fa35238c78c753b79ca189278c2cb26 Author: Mans Rullgard <ma...@ma...> Date: Wed Aug 19 11:48:32 2020 +0100 build: simplify win32 glob selection Move the files to a subdirectory so the header can be activated by simply adding a -I flag, avoiding ugly ifdefs. Use this version if a native glob is missing and FindFirstFileA() exists. This is more accurate than matching the system name since some mingw versions do have a glob implementation. diff --git a/configure.ac b/configure.ac index 5d5a9866..b9822490 100644 --- a/configure.ac +++ b/configure.ac @@ -13,10 +13,7 @@ AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR(sox.1) AC_CONFIG_HEADERS([src/soxconfig.h]) -dnl Find target architecture -AC_CANONICAL_TARGET - -AM_INIT_AUTOMAKE +AM_INIT_AUTOMAKE([subdir-objects]) AM_SILENT_RULES([yes]) LT_INIT([win32-dll]) @@ -62,16 +59,12 @@ dnl Check for OpenMP AC_OPENMP CFLAGS="$CFLAGS $OPENMP_CFLAGS" -using_win32_glob="no" -case $target in - *mingw*) - using_win32_glob="yes" - ;; -esac -if test "$using_win32_glob" = yes; then - AC_DEFINE([HAVE_WIN32_GLOB_H], 1, [Define to 1 to use win32 glob]) +if test "$ac_cv_header_glob_h" != yes; then + AC_CHECK_FUNC([FindFirstFileA], [ + AC_DEFINE([HAVE_GLOB_H], [1], [Define if glob.h exists]) + HAVE_WIN32_GLOB=yes]) fi -AM_CONDITIONAL(HAVE_WIN32_GLOB, test x$using_win32_glob = xyes) +AM_CONDITIONAL(HAVE_WIN32_GLOB, test "$HAVE_WIN32_GLOB" = yes) AC_ARG_WITH(dyn-default,AS_HELP_STRING([--with-dyn-default],[Default to loading optional formats dynamically]),opt_default=dyn,opt_default=yes) diff --git a/src/Makefile.am b/src/Makefile.am index b63780e6..e0986584 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -27,7 +27,8 @@ lib_LTLIBRARIES = libsox.la include_HEADERS = sox.h sox_SOURCES = sox.c if HAVE_WIN32_GLOB -sox_SOURCES += win32-glob.c win32-glob.h +sox_SOURCES += win32/glob.c win32/glob.h +AM_CPPFLAGS += -I$(srcdir)/win32 endif sox_LDADD = libsox.la example0_SOURCES = example0.c diff --git a/src/sox.c b/src/sox.c index 43e3d707..03f9571a 100644 --- a/src/sox.c +++ b/src/sox.c @@ -37,10 +37,7 @@ #include <sys/types.h> #include <time.h> -#if defined(HAVE_WIN32_GLOB_H) - #include "win32-glob.h" - #define HAVE_GLOB_H 1 -#elif defined(HAVE_GLOB_H) +#if defined(HAVE_GLOB_H) #include <glob.h> #endif diff --git a/src/win32-glob.c b/src/win32/glob.c similarity index 99% rename from src/win32-glob.c rename to src/win32/glob.c index 58d72231..d1cf3755 100644 --- a/src/win32-glob.c +++ b/src/win32/glob.c @@ -15,7 +15,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "win32-glob.h" +#include "glob.h" #include <stdlib.h> #include <stdio.h> #include <errno.h> diff --git a/src/win32-glob.h b/src/win32/glob.h similarity index 100% rename from src/win32-glob.h rename to src/win32/glob.h commit 3187d953c541a8094eec8040177d7cfcb1601749 Author: Mans Rullgard <mans@mansr.c... [truncated message content] |
From: Mans R. <ma...@us...> - 2020-08-26 11:43:21
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, master has been updated via c2fda8f3e4f3623d1766d37078fb05d3ef6dbbe8 (commit) via 5e23e9c24393638380e8474fae1f42661c498967 (commit) from 3518bcd92416e7cf71ee9a863695a518f3de4e52 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c2fda8f3e4f3623d1766d37078fb05d3ef6dbbe8 Author: Mans Rullgard <ma...@ma...> Date: Mon Aug 24 19:25:39 2020 +0100 wav: warn when writing truncated size fields in large files diff --git a/src/wav.c b/src/wav.c index 8cd87b86..bf7d2714 100644 --- a/src/wav.c +++ b/src/wav.c @@ -1468,6 +1468,10 @@ static int wavwritehdr(sox_format_t * ft, int second_header) lsx_debug(" %d byte/sec, %d block align, %d bits/samp", dwAvgBytesPerSec, wBlockAlign, wBitsPerSample); } else { + if (wRiffLength == UINT32_MAX || dwDataLength == UINT32_MAX || + dwSamplesWritten == UINT32_MAX) + lsx_warn("File too large, writing truncated values in header"); + lsx_debug("Finished writing Wave file, %"PRIu64" data bytes %"PRIu64" samples", dwDataLength, wav->numSamples); #ifdef HAVE_GSM commit 5e23e9c24393638380e8474fae1f42661c498967 Author: Mans Rullgard <ma...@ma...> Date: Mon Aug 24 21:34:28 2020 +0100 utils: drop inttypes fallback definitions All modern systems have the C99 inttypes.h definitions. Drop the fallbacks. diff --git a/src/util.h b/src/util.h index 87970bb9..fa341285 100644 --- a/src/util.h +++ b/src/util.h @@ -19,6 +19,7 @@ #include <stdio.h> #include <stdlib.h> +#include <inttypes.h> #include "soxconfig.h" #ifdef HAVE_SYS_TYPES_H @@ -33,55 +34,6 @@ /*---------------------------- Portability stuff -----------------------------*/ -#if defined(HAVE_INTTYPES_H) - #include <inttypes.h> -#elif defined(HAVE_STDINT_H) - #include <stdint.h> -#else - typedef sox_int8_t int8_t; - typedef sox_uint8_t uint8_t; - typedef sox_int16_t int16_t; - typedef sox_uint16_t uint16_t; - typedef sox_int32_t int32_t; - typedef sox_uint32_t uint32_t; - typedef sox_int64_t int64_t; - typedef sox_uint64_t uint64_t; - #define UINT64_MAX ((uint64_t)-1) -#endif - -/* Define the format specifier to use for int64_t values. - * Example: printf("You may have already won $ %" PRId64 " !!!", n64); */ -#ifndef PRId64 /* Maybe <inttypes.h> already defined this. */ -#if defined(_MSC_VER) || defined(__MINGW32__) /* Older versions of msvcrt.dll don't recognize %lld. */ -#define PRId64 "I64d" -#elif LONG_MAX==9223372036854775807 -#define PRId64 "ld" -#else -#define PRId64 "lld" -#endif -#endif /* PRId64 */ - -/* Define the format specifier to use for uint64_t values. */ -#ifndef PRIu64 /* Maybe <inttypes.h> already defined this. */ -#if defined(_MSC_VER) || defined(__MINGW32__) /* Older versions of msvcrt.dll don't recognize %llu. */ -#define PRIu64 "I64u" -#elif ULONG_MAX==0xffffffffffffffff -#define PRIu64 "lu" -#else -#define PRIu64 "llu" -#endif -#endif /* PRIu64 */ - -/* Define the format specifier to use for size_t values. - * Example: printf("Sizeof(x) = %" PRIuPTR " bytes", sizeof(x)); */ -#ifndef PRIuPTR /* Maybe <inttypes.h> already defined this. */ -#if defined(_MSC_VER) || defined(__MINGW32__) /* Older versions of msvcrt.dll don't recognize %zu. */ -#define PRIuPTR "Iu" -#else -#define PRIuPTR "zu" -#endif -#endif /* PRIuPTR */ - #ifdef __GNUC__ #define NORET __attribute__((noreturn)) #define UNUSED __attribute__ ((unused)) ----------------------------------------------------------------------- Summary of changes: src/util.h | 50 +------------------------------------------------- src/wav.c | 4 ++++ 2 files changed, 5 insertions(+), 49 deletions(-) hooks/post-receive -- sox |
From: Mans R. <ma...@us...> - 2020-08-24 17:20:19
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, new-build has been updated via ee301af34d0acdef725bffb9c4f40bbe5fa210e0 (commit) from e504fe1f43230aee2ccc1ac5c0fdfd6e92dc5fa8 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ee301af34d0acdef725bffb9c4f40bbe5fa210e0 Author: Mans Rullgard <ma...@ma...> Date: Mon Aug 24 18:19:41 2020 +0100 build: fix misdetection of oss and sunaudio on netbsd diff --git a/configure.ac b/configure.ac index 59bfd53a..47e6dd6a 100644 --- a/configure.ac +++ b/configure.ac @@ -132,9 +132,10 @@ SOX_FMT_LIB([coreaudio], [CoreAudio/CoreAudio.h], [], [AudioDeviceStart], [], [[-Wl,-framework,CoreAudio]], [devices]) SOX_FMT_LIB([pulseaudio], [pulse/simple.h], [pulse], [pa_simple_new], [], [-lpulse-simple], [devices]) -SOX_FMT_HEADERS([oss], [sys/soundcard.h], [], [devices]) +SOX_FMT_HEADERS([oss], [sys/soundcard.h], [SNDCTL_MIDI_INFO], [], [devices]) SOX_FMT_LIB([sndio], [sndio.h], [sndio], [sio_open], [], [], [devices]) -SOX_FMT_HEADERS([sunaudio], [sys/audioio.h sun/audioio.h], [], [devices]) +SOX_FMT_HEADERS([sunaudio], [sys/audioio.h sun/audioio.h], + [AUDIO_HWFEATURE_DUPLEX], [], [devices]) SOX_FMT_LIB([waveaudio], [mmsystem.h], [winmm], [waveOutOpen], [windows.h], [], [devices]) diff --git a/m4/sox.m4 b/m4/sox.m4 index 9c7113cd..f1d877ae 100644 --- a/m4/sox.m4 +++ b/m4/sox.m4 @@ -28,7 +28,8 @@ AC_DEFUN([SOX_INCLUDE], [[#include <]]$1[[> ]]) dnl -dnl SOX_CHECK_HEADERS(HEADERS, [IF-FOUND], [IF-NOT-FOUND], [EXTRA-HEADERS]) +dnl SOX_CHECK_HEADERS(HEADERS, [DECL], [IF-FOUND], [IF-NOT-FOUND], +dnl [EXTRA-HEADERS]) dnl dnl Check for presence of headers. dnl @@ -42,9 +43,10 @@ dnl HAVE_HEADER: Set with AC_DEFINE to 1 for the first header found dnl AC_DEFUN([SOX_CHECK_HEADERS], [ sox_ch_found=no - AC_CHECK_HEADERS([$1], [sox_ch_found=yes; break], [], - [m4_map([SOX_INCLUDE], m4_split([$4]))]) - AS_CASE([$sox_ch_found], [yes], [$2], [$3]) + AC_CHECK_HEADERS([$1], [sox_ch_found=$ac_header; break], [], + [m4_map([SOX_INCLUDE], m4_split([$5]))]) + AS_CASE([$sox_ch_found], [no], [$4], [m4_ifblank([$2], [$3], + [AC_CHECK_DECL([$2], [$3], [$4], [SOX_INCLUDE([$sox_ch_found])])])]) ]) dnl @@ -72,7 +74,7 @@ AC_DEFUN([SOX_CHECK_LIB], [ m4_pushdef([lib], [m4_default([$3], [c])]) m4_pushdef([flags], [m4_ifnblank([$3], [-l$3 $8], [$8])]) HAVE_[]$1=no - SOX_CHECK_HEADERS([$2], [AC_CHECK_LIB(lib, [$4], + SOX_CHECK_HEADERS([$2], [], [AC_CHECK_LIB(lib, [$4], [HAVE_[]$1=yes], [], [$8 $$1[]_LIBS])], [], [$7]) AS_CASE([$HAVE_[]$1], [yes], [ AC_DEFINE([HAVE_]$1, [1], [Define if $4 exists in ]flags) @@ -221,16 +223,18 @@ AC_DEFUN([SOX_FMT_REQ], [ ]) dnl -dnl SOX_FMT_HEADERS(NAME, HEADERS, [INCLUDES], [SECTION]) +dnl SOX_FMT_HEADERS(NAME, HEADERS, [DECL], [EXTRA-HEADERS], [SECTION]) dnl dnl Wrapper for SOX_FMT with SOX_CHECK_HEADERS as test. dnl AC_DEFUN([SOX_FMT_HEADERS], [ - SOX_FMT([$1], [SOX_CHECK_HEADERS([$2], [], [HAVE_[]T=no], [$3])], [$4]) + SOX_FMT([$1], + [SOX_CHECK_HEADERS([$2], [$3], [], [HAVE_[]T=no], [$4])], [$5]) ]) dnl -dnl SOX_FMT_LIB(NAME, HEADERS, LIB, FUNC, [INCLUDES], [EXTRA-LIBS], [SECTION]) +dnl SOX_FMT_LIB(NAME, HEADERS, LIB, FUNC, [EXTRA-HEADERS], [EXTRA-LIBS], +dnl [SECTION]) dnl dnl Wrapper for SOX_FMT with SOX_CHECK_LIB as test. dnl diff --git a/src/sox.c b/src/sox.c index 03f9571a..ec7406f8 100644 --- a/src/sox.c +++ b/src/sox.c @@ -45,24 +45,16 @@ #include <io.h> #endif +#ifdef HAVE_SUNAUDIO #ifdef HAVE_SUN_AUDIOIO_H #include <sun/audioio.h> - #define HAVE_AUDIOIO_H 1 -#else -#ifdef HAVE_SYS_AUDIOIO_H +#elif defined HAVE_SYS_AUDIOIO_H #include <sys/audioio.h> - #define HAVE_AUDIOIO_H 1 #endif #endif -#ifdef HAVE_SYS_SOUNDCARD_H +#ifdef HAVE_OSS #include <sys/soundcard.h> - #define HAVE_SOUNDCARD_H 1 -#else -#ifdef HAVE_MACHINE_SOUNDCARD_H - #include <machine/soundcard.h> - #define HAVE_SOUNDCARD_H 1 -#endif #endif #ifdef HAVE_SYS_TIME_H @@ -1305,7 +1297,7 @@ static int kbhit(void) #define kbhit() 0 #endif -#ifdef HAVE_SOUNDCARD_H +#ifdef HAVE_OSS #include <sys/ioctl.h> static void adjust_volume(int delta) { @@ -1326,7 +1318,7 @@ static void adjust_volume(int delta) if (vol1 == vol2) putc('\a', stderr); } -#elif defined(HAVE_AUDIOIO_H) +#elif defined HAVE_SUNAUDIO static void adjust_volume(int delta) { int vol1 = 0, vol2 = 0, fd = fileno((FILE*)ofile->ft->fp); ----------------------------------------------------------------------- Summary of changes: configure.ac | 5 +++-- m4/sox.m4 | 20 ++++++++++++-------- src/sox.c | 18 +++++------------- 3 files changed, 20 insertions(+), 23 deletions(-) hooks/post-receive -- sox |
From: Mans R. <ma...@us...> - 2020-08-23 13:56:30
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, new-build has been updated discards 5ce4b3f8ac7640aed14235955dd5703ababf3204 (commit) discards 059b0978db71788b76625dd0c56054ea0149dfb2 (commit) discards affc279d142f843f3f50d4718798303396ee24b4 (commit) discards 2ace6a9b3d18c737d866a6ec01693f5cdbaca8b0 (commit) discards 66af4a355ac51bbd8b50ba8f81419feb7f1f2f7d (commit) discards cbab9c7f63c6e719f74561c809e242f487aa6cd7 (commit) discards e6f2618101bc2a30ed42df62fb23e3fd2b22e2e0 (commit) discards f53b98e3dcaca2f23a824c0748a52e8f8cd932eb (commit) discards cd4f0f861521e3df9c0affc5f18df21e27af5b12 (commit) discards 7d91a3c3d78d8d52847ec47314ca1eb57b83f629 (commit) discards 39e1217eda83e848c05d1314ee0764497dcef9d8 (commit) discards 42e1ca99a06993a81404f77760931c02df7cb3ee (commit) discards d2d36bae6e92e7dbae505cd14d3ffe469d0bafc0 (commit) discards 0b4b2f4da86d3f44f2132fc138e53377f5e68e78 (commit) discards 717bc0599231be687e6a45c151bab622d645d4e2 (commit) discards e23dbb9d98e46ce1622d71747a9a44a0d7a14d5d (commit) discards f2ec371d2e701b9bd20f03f93cd542925ffcb9be (commit) discards 1f6ceec8398a5f7334308c2d901253a534988198 (commit) discards 531e85c51e4f2bf294fa6aa184d652c1f622517e (commit) discards 22c0c8c58a261fd2f7d9fa16ae89d138b90269bb (commit) discards 099d61030f6672369f4b67ee0403de3585d6e21c (commit) discards 8176f85f8b792a628873d3fd3f57cd0f9a4e6247 (commit) discards 94b4b04dd9425a6f51def45b45599f0a3300a68a (commit) discards fcc342891260778863b0b262b04b1dbb64746002 (commit) discards 4851a1bd399ffe49de69c6a7dd03dd2840c88767 (commit) discards 9a668d0bda1cae6691d7c8d111745c6e8aa22be7 (commit) discards 45ef2932a47187ca4f9de257d0757c93dd795f51 (commit) discards 2d63f5d7dc14ef00e7ad386a862a1171b6ef9de6 (commit) discards 48b23808f065ef96d1ef09ec95c2c4f05cc2cea6 (commit) discards 83f6dc8d3419506b0d5abf2421e6ec2e00521a1d (commit) discards d5368c71799d3353d310af8cc9170c2baa03d301 (commit) via e504fe1f43230aee2ccc1ac5c0fdfd6e92dc5fa8 (commit) via 5b82135e3f5737a079d804973c62c396b15ce3f8 (commit) via 857d55a9c72b2d72c84a995ecfc780c0f379640a (commit) via c29f5d181746a23432e81493ebd0202b1485c07b (commit) via 6eeef9147666726250ffcc1877a19e2bf7600c23 (commit) via 505421aa571d9a383a81ac33df1b1cb14911c915 (commit) via 005f95a8a7bfe7eefe5e83430e588ff0a0181624 (commit) via 46c1fe663ca22da1a63d4b924da255e8248eeaf8 (commit) via d04651c022050df470e52f02c577d7c5d8153c96 (commit) via d9362c987c01acb1dad91dd6f567242bdfa69899 (commit) via ec5425bcb5d813e69111032e28a0a9149c356fed (commit) via 1c1226ada62866e345ac691efb171fe30cfa4fbe (commit) via cda1c30462a133e09c825e4c131d5fa920312b19 (commit) via 4c926cb7f5058de364824bf3ae33f239b32611db (commit) via be60b62e80142ec645f4c9bef5bc87913429f474 (commit) via 2026ce5d12928aef16f4e0e8e1924195c158f9f6 (commit) via 4f622249eacd7fde5d4399b58332f694ebcefdf4 (commit) via 22f209a5dab1b8e20167bee669fac60162860192 (commit) via 0b863fa4d6655e7aec615a10779446e80206909f (commit) via 4ae736281e506f8cb091a200b8c5e4dfcffd2671 (commit) via 7211eb068482daf8f313a6313c042319d16df5cd (commit) via d2e8756359f6413b41a98c0be14e7ffc2dad209e (commit) via cf6181d6e99d2a9378132b97b912e176d40ddc37 (commit) via 236674c2428fbc28d44582ca9ba52601986c8502 (commit) via 46a088868f5386e0aff4c008537cfab95b5cc007 (commit) via 4ed2550a710828a6334e781f32f336093b2834ff (commit) via e772786b0d9ae003df3d4c98f7260f4e40ce820c (commit) via 3518bcd92416e7cf71ee9a863695a518f3de4e52 (commit) via 1571c87c9519923b30d16c92f17515228c983924 (commit) via 266f197cddf52fab1fdb8336498026cca0c5de5a (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (5ce4b3f8ac7640aed14235955dd5703ababf3204) \ N -- N -- N (e504fe1f43230aee2ccc1ac5c0fdfd6e92dc5fa8) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit e504fe1f43230aee2ccc1ac5c0fdfd6e92dc5fa8 Author: Mans Rullgard <ma...@ma...> Date: Fri Aug 14 13:35:31 2020 +0100 build: rewrite most of configure using new macros Most of the checks are now a single macro call, making the configure script much easier to read. The use of --enable and --with flags has been streamlined. Optional libraries use --with-foo, some of them accepting the value 'dyn' to activate runtime dynamic loading. The optional formats use --enable, again with the value 'dyn' enabling dynamic loading. As before, the default behaviour is to detect libraries and enable support for available ones. If an explicitly enabled feature has a dependency that is missing or disabled, an error is reported. diff --git a/INSTALL b/INSTALL index 3e8e272e..170a5e70 100644 --- a/INSTALL +++ b/INSTALL @@ -53,17 +53,14 @@ To compile and install SoX (executables, libraries, manual pages) with a default configuration for your platform, run the following commands: ./configure - make -s + make make install -There should be no errors and few, if any, warnings during the `make --s' stage. Any warnings about pointer mismatch or conversion should +There should be no errors and few, if any, warnings during the `make' +stage. Any warnings about pointer mismatch or conversion should be treated with deep suspicion. -The `make install' command may require `root' priviliges; for example, -on some systems, the following modification to the command is needed: - - sudo make install +The `make install' command may require `root' priviliges. To run a selection of tests on the installed sox executable: @@ -81,8 +78,8 @@ Again, `root' priviliges may be needed at the install stages. -Custom build options on a POSIX system --------------------------------------- +Custom build options +-------------------- Selection of optional libraries and of other build options can be made by adding parameters to the `./configure' command line (above). Run @@ -104,61 +101,33 @@ For example, ./configure --with-distro='Super Linux OS 6.1' If any libraries are installed in a non-standard locations in your -system then you can use the CPPFLAGS and LDFLAGS variables to allow -configure to find them. For example: - -./configure CPPFLAGS="-I/home/sox/include -I/usr/local/multimedia/include" LDFLAGS="-L/home/sox/lib -L/usr/local/multimedia/lib" - -If you are compiling under cygwin and would like to create a static -sox.exe using mingw libraries then you can use the following: - -./configure CC="gcc -mno-cygwin" --disable-shared - -The next cygwin example is used to build the cygwin version of SoX that is -distributed by the project. It tells gcc to prefer static libraries -over dynamic ones and to use some static libraries compiled manually -and installed under /usr/local. - -./configure LDFLAGS="-static -L/usr/local/lib" CPPFLAGS=-I/usr/local/include - -You can run "cygcheck.exe src/sox.exe" after compiling to see which -dynamic DLL's will be required to be distributed with the cygwin -executable. +system, the compiler and linker must be informed of this. Often, +environment variables can be used for this purpose. For example, if +using the GNU or Clang/LLVM toolchains, the following might be used in +a Bourne-compatible shell: -Alternatively, you can make use of the "cygbuild" script distributed -with SoX source that is used to automate all steps of building -a win32 package. "osxbuild" script is used to automate all steps -of building a MacOS X package. +export CPATH=/usr/local/include +export LIBRARY_PATH=/usr/local/lib -Newer versions of SoX include support for loading libraries for -file formats at runtime. The main usage of this feature is to -allow shipping SoX without dependencies on external libraries -that are not globally used or have redistribution restrictions. -If you experience problems with this then you may wish to disable -this feature: +For other compilers and shells, consult their respective manuals. -./configure --without-libltdl +Optional features +----------------- -Also, the default behavior even when libltdl is used is to link -all file format handlers into libsox as there is a performance -hit when dynamically loading external libraries. To force a format -handler to be built as a dynamically loaded module, pass "dyn" to -its --with-* option. For example, to build pulseaudio handler as -an external dynamic library: +Support for some file formats is optional and controlled by --enable-* +flags to configure. If the value "dyn" is passed to these flags, +e.g. --enable-flac=dyn, the corresponding code is built as a module +and loaded at runtime. -./configure --with-pulseaudio=dyn +Use of external libraries is controlled by --with-* flags. Some of +these accept the value "dyn" to enable runtime loading of the library. -A subset of external libraries can be configured to be dlopen()'ed -at run time instead of being linked in. This will allow one to -distribute a binary with optional features that only require -a user to install the missing libraries into their system. This -can be enabled using: +The runtime loading feature is mainly useful for distributing the +"sox" executable to systems that may not have all the external +libraries installed. ---enable-dl-lame ---enable-dl-mad ---enable-dl-sndfile ---enable-dl-amrnb ---enable-dl-amrwb +For a complete list of optional formats and libraries, including which +support runtime loading, refer to the "configure --help" output. Testing ------- diff --git a/configure.ac b/configure.ac index b9822490..59bfd53a 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,8 @@ LT_INIT([win32-dll]) AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=name], [Provide distribution name]), - AC_DEFINE_UNQUOTED(DISTRO, ["$with_distro"], [Distribution name])) + AC_DEFINE_UNQUOTED(DISTRO, ["$with_distro"], [Distribution name]) + SOX_REPORT([build], [distro name], [${with_distro:-unspecified}])) dnl Checks for programs. AC_PROG_CC @@ -58,6 +59,7 @@ AC_FUNC_FSEEKO dnl Check for OpenMP AC_OPENMP CFLAGS="$CFLAGS $OPENMP_CFLAGS" +SOX_REPORT([other], [OpenMP], [${OPENMP_CFLAGS:-no}]) if test "$ac_cv_header_glob_h" != yes; then AC_CHECK_FUNC([FindFirstFileA], [ @@ -66,470 +68,98 @@ if test "$ac_cv_header_glob_h" != yes; then fi AM_CONDITIONAL(HAVE_WIN32_GLOB, test "$HAVE_WIN32_GLOB" = yes) -AC_ARG_WITH(dyn-default,AS_HELP_STRING([--with-dyn-default],[Default to loading optional formats dynamically]),opt_default=dyn,opt_default=yes) - -AC_ARG_WITH(libltdl, - AS_HELP_STRING([--without-libltdl], - [Don't try to use libltdl for external dynamic library support]), - with_libltdl=$withval, with_libltdl=default) - -if test "$with_libltdl" = "default"; then - dnl Default to no libltdl support when building only static libraries - if test "$enable_shared" != "no"; then - using_libltdl=yes - else - using_libltdl=no - fi - with_libltdl="yes" -else - using_libltdl=$with_libltdl -fi - -dnl Check if ltdl should be enabled. -if test "$using_libltdl" != "no"; then - AC_CHECK_HEADERS(ltdl.h, - AC_CHECK_LIB(ltdl, lt_dlinit, LIBLTDL="$LIBLTDL -lltdl", - using_libltdl=no), using_libltdl=no) -fi -if test "$using_libltdl" = yes; then - AC_DEFINE([HAVE_LIBLTDL], 1, [Define to 1 if you have libltdl]) -fi -AM_CONDITIONAL(HAVE_LIBLTDL, test x$using_libltdl = xyes) -AC_SUBST(LIBLTDL) - - -dnl Check for magic library -AC_ARG_WITH(magic, - AS_HELP_STRING([--without-magic], - [Don't try to use magic])) -using_magic=no -if test "$with_magic" != "no"; then - using_magic=yes - AC_CHECK_HEADER(magic.h, - [AC_CHECK_LIB(magic, magic_open, MAGIC_LIBS="-lmagic",using_magic=no)], - using_magic=no) - if test "$with_magic" = "yes" -a "$using_magic" = "no"; then - AC_MSG_FAILURE([cannot find magic]) - fi -fi -if test "$using_magic" = yes; then - AC_DEFINE(HAVE_MAGIC, 1, [Define to 1 if you have magic.]) -fi -AM_CONDITIONAL(HAVE_MAGIC, test x$using_magic = xyes) -AC_SUBST(MAGIC_LIBS) - - - -dnl Check for png libraries -AC_ARG_WITH(png, - AS_HELP_STRING([--without-png], - [Don't try to use png])) -using_png=no -if test "$with_png" != "no"; then - AC_CHECK_HEADERS(png.h libpng/png.h,using_png=yes) - if test "$using_png" = "yes"; then - AC_CHECK_LIB(png, png_set_rows, PNG_LIBS="$PNG_LIBS -lpng -lz", - [AC_CHECK_LIB(png12, png_set_rows, - PNG_LIBS="$PNG_LIBS -lpng12 -lz", - using_png=no, -lz)], -lz) - fi - if test "$with_png" = "yes" -a "$using_png" = "no"; then - AC_MSG_FAILURE([cannot find png]) - fi -fi -if test "$using_png" = yes; then - AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have PNG.]) -fi -AM_CONDITIONAL(HAVE_PNG, test x$using_png = xyes) -AC_SUBST(PNG_LIBS) - - - -dnl Test for LADSPA -AC_ARG_WITH(ladspa, - AS_HELP_STRING([--without-ladspa], [Don't try to use LADSPA])) -using_ladspa=no -if test "$with_ladspa" != "no" -a "$using_libltdl" = "yes"; then - using_ladspa=yes - AC_DEFINE(HAVE_LADSPA_H, 1, [1 if should enable LADSPA]) -fi -LADSPA_PATH=${libdir}/ladspa -AC_ARG_WITH(ladspa-path, - AS_HELP_STRING([--with-ladspa-path], [Default search path for LADSPA plugins])) -AC_SUBST(LADSPA_PATH) - - - -dnl Check for MAD libraries -AC_ARG_WITH(mad, - AS_HELP_STRING([--without-mad], - [Don't try to use MAD (MP3 Audio Decoder)])) -using_mad=no -if test "$with_mad" != "no"; then - using_mad=yes - AC_CHECK_HEADERS(mad.h,, using_mad=no) - AC_MSG_CHECKING([whether to dlopen mad]) - AC_ARG_ENABLE(dl_mad, - AS_HELP_STRING([--enable-dl-mad], [Dlopen mad instead of linking in.]), - enable_dl_mad=$enableval, enable_dl_mad=no) - AC_MSG_RESULT($enable_dl_mad) - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_mad" = "xyes"; then - AC_DEFINE(DL_MAD, 1, [Define to dlopen() mad.]) - else - enable_dl_mad="no" - AC_CHECK_LIB(mad, mad_stream_buffer, MP3_LIBS="$MP3_LIBS -lmad",using_mad=no) - if test "$with_mad" = "yes" -a "$using_mad" = "no"; then - AC_MSG_FAILURE([cannot find libmad]) - fi - fi -fi - - - -dnl Check for id3tag libraries -AC_ARG_WITH(id3tag, - AS_HELP_STRING([--without-id3tag], - [Don't try to use id3tag])) -using_id3tag=no -if test "$with_id3tag" != "no"; then - using_id3tag=yes - AC_CHECK_HEADER(id3tag.h, - [AC_CHECK_LIB(id3tag, id3_file_open, MP3_LIBS="$MP3_LIBS -lid3tag -lz",using_id3tag=no, -lz)], - using_id3tag=no) - if test "$with_id3tag" = "yes" -a "$using_id3tag" = "no"; then - AC_MSG_FAILURE([cannot find id3tag]) - fi -fi -if test "$using_id3tag" = yes; then - AC_DEFINE(HAVE_ID3TAG, 1, [Define to 1 if you have id3tag.]) -fi -AM_CONDITIONAL(HAVE_ID3TAG, test x$using_id3tag = xyes) - - - -dnl Check for LAME library. -AC_ARG_WITH(lame, - AS_HELP_STRING([--without-lame], - [Don't try to use LAME (LAME Ain't an MP3 Encoder)])) -using_lame=no -if test "$with_lame" != "no"; then - using_lame=yes - AC_MSG_CHECKING([whether to dlopen lame]) - AC_ARG_ENABLE(dl_lame, - AS_HELP_STRING([--enable-dl-lame], [Dlopen lame instead of linking in.]), - enable_dl_lame=$enableval, enable_dl_lame=no) - AC_MSG_RESULT($enable_dl_lame) - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_lame" = "xyes"; then - AC_DEFINE(DL_LAME, 1, [Define to dlopen() lame.]) - else - enable_dl_lame="no" - AC_CHECK_HEADERS(lame/lame.h,, - [AC_CHECK_HEADERS(lame.h, [], using_lame=no)]) - AC_CHECK_LIB(mp3lame, lame_get_lametag_frame, MP3_LIBS="$MP3_LIBS -lmp3lame", using_lame=no) - if test "$with_lame" = "yes" -a "$using_lame" = "no"; then - AC_MSG_FAILURE([cannot find LAME]) - fi - fi -fi - - - -dnl Check for Twolame library -AC_ARG_WITH(twolame, - AS_HELP_STRING([--without-twolame], - [Don't try to use Twolame (MP2 Audio Encoder)])) -using_twolame=no -if test "$with_twolame" != "no"; then - using_twolame=yes - AC_CHECK_HEADERS(twolame.h,, using_twolame=no) - AC_MSG_CHECKING([whether to dlopen twolame]) - AC_ARG_ENABLE(dl_twolame, - AS_HELP_STRING([--enable-dl-twolame], [Dlopen twolame instead of linking in.]), - enable_dl_twolame=$enableval, enable_dl_twolame=no) - AC_MSG_RESULT($enable_dl_twolame) - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_twolame" = "xyes"; then - AC_DEFINE(DL_TWOLAME, 1, [Define to dlopen() libtwolame.]) - else - enable_dl_twolame="no" - AC_CHECK_LIB(twolame, twolame_init, MP3_LIBS="$MP3_LIBS -ltwolame",using_twolame=no) - if test "$with_twolame" = "yes" -a "$using_twolame" = "no"; then - AC_MSG_FAILURE([cannot find libtwolame]) - fi - fi -fi - -# Check for libgsm -HAVE_LIBGSM=yes -AC_CHECK_HEADERS(gsm/gsm.h, , - [AC_CHECK_HEADERS(gsm.h, , HAVE_LIBGSM=no)]) - AC_CHECK_LIB(gsm, gsm_create, [ - AC_DEFINE(HAVE_LIBGSM, 1, [Define if libgsm is available]) - LIBGSM_LIBS="$LIBGSM_LIBS -lgsm"], HAVE_LIBGSM=no) -AC_SUBST(LIBGSM_LIBS) - - - -# Check for liblpc10 -found_liblpc10=yes -AC_CHECK_HEADERS(lpc10.h, , - [AC_CHECK_HEADERS(lpc10.h, ,found_liblpc10=no)]) - AC_CHECK_LIB(lpc10, create_lpc10_encoder_state, LPC10_LIBS="$LPC10_LIBS -llpc10", found_liblpc10=no) -if test "$found_liblpc10" = yes; then - AC_DEFINE(HAVE_LIBLPC10, 1, [Define if you are using an external liblpc10]) -else - LPC10_CFLAGS='-I${top_srcdir}/lpc10' - LPC10_LIBS=../lpc10/liblpc10.la -fi -AM_CONDITIONAL(HAVE_LIBLPC10, test x$found_liblpc10 = xyes) - - - -# Check for Ogg Vorbis -AC_OPTIONAL_FORMAT(oggvorbis, OGGVORBIS, [AC_CHECK_HEADER(vorbis/codec.h, - [AC_CHECK_LIB(ogg, ogg_packet_clear, OGGVORBIS_LIBS="$OGGVORBIS_LIBS -logg", using_oggvorbis=no) - AC_CHECK_LIB(vorbis, vorbis_analysis_headerout, OGGVORBIS_LIBS="-lvorbis $OGGVORBIS_LIBS", using_oggvorbis=no, $OGGVORBIS_LIBS) - AC_CHECK_LIB(vorbisfile, ov_clear, OGGVORBIS_LIBS="-lvorbisfile $OGGVORBIS_LIBS", using_oggvorbis=no, $OGGVORBIS_LIBS) - AC_CHECK_LIB(vorbisenc, vorbis_encode_init_vbr, OGGVORBIS_LIBS="-lvorbisenc $OGGVORBIS_LIBS", using_oggvorbis=no, $OGGVORBIS_LIBS)], - using_oggvorbis=no)]) - -# Check for Opus -AC_OPTIONAL_FORMAT(opus, OPUS, - [PKG_CHECK_MODULES(OPUS, [opusfile], [], using_opus=no)], - using_opus=no) - - -dnl Check for FLAC library -AC_OPTIONAL_FORMAT(flac, FLAC, - [PKG_CHECK_MODULES([FLAC], [flac], [], [using_flac=no])]) - - -tmp_using_amrwb=no -AC_CHECK_HEADERS(opencore-amrwb/dec_if.h, - [AC_CHECK_LIB(opencore-amrwb, D_IF_init, - [OPENCORE_AMRWB_LIBS="$OPENCORE_AMRWB_LIBS -lopencore-amrwb"; tmp_using_amrwb=$opt_default])]) -AC_CHECK_HEADERS(vo-amrwbenc/enc_if.h, - [AC_CHECK_LIB(vo-amrwbenc, E_IF_init, - [VO_AMRWBENC_LIBS="$VO_AMRWBENC_LIBS -lvo-amrwbenc"; tmp_using_amrwb=$opt_default])]) -AC_ARG_ENABLE(dl_opencore_amrwb, - AS_HELP_STRING([--enable-dl-opencore-amrwb], - [Dlopen opencore-amrbw instead of linking in.])) -AC_ARG_ENABLE(dl_vo_amrwbenc, - AS_HELP_STRING([--enable-dl-vo-amrwbenc], - [Dlopen vo-amrbwenc instead of linking in.])) -if test "$using_libltdl" != "yes"; then - enable_dl_opencore_amrwb=no - enable_dl_vo_amrwbenc=no -fi -if test "$enable_dl_opencore_amrwb" = "yes"; then - AC_DEFINE(DL_OPENCORE_AMRWB, 1, [Define to dlopen() opencore-amrwb.]) -else - AMRWB_LIBS="$AMRWB_LIBS $OPENCORE_AMRWB_LIBS" -fi -if test "$enable_dl_vo_amrwbenc" = "yes"; then - AC_DEFINE(DL_VO_AMRWBENC, 1, [Define to dlopen() vo-amrwbenc.]) -else - AMRWB_LIBS="$AMRWB_LIBS $VO_AMRWBENC_LIBS" -fi -AC_OPTIONAL_FORMAT(amrwb, AMRWB, [using_amrwb=$tmp_using_amrwb]) - -dnl When enable_dl_amrnb, do not let add libraries to be linked in -dnl since they will be dlopen()'ed instead. -ac_sox_save_AMRNB_LIBS="$AMRNB_LIBS" -tmp_using_amrnb=$opt_default -AC_CHECK_HEADERS(opencore-amrnb/interf_dec.h, - [AC_CHECK_LIB(opencore-amrnb, Decoder_Interface_init, - AMRNB_LIBS="$AMRNB_LIBS -lopencore-amrnb", tmp_using_amrnb=no)], - [tmp_using_amrnb=no]) -AC_ARG_ENABLE(dl_opencore_amrnb, - AS_HELP_STRING([--enable-dl-opencore-amrnb], - [Dlopen opencore-amrnb instead of linking in.])) -if test "$using_libltdl" = "yes" -a "$enable_dl_opencore_amrnb" = "yes"; then - AC_DEFINE(DL_OPENCORE_AMRNB, 1, [Define to dlopen() opencore-amrnb.]) - dnl When enable_dl_amrnb, do not let SOX_PATH_AMRNB add libraries - dnl to be linked in (since they will be dlopen()'ed instead). - AMRNB_LIBS="$ac_sox_save_AMRNB_LIBS" - dnl Force to using regardless if headers or libraries were found. - tmp_using_amrnb=yes -else - enable_dl_opencore_amrnb="no" -fi -AC_OPTIONAL_FORMAT(amrnb, AMRNB, [using_amrnb=$tmp_using_amrnb]) - - -AC_OPTIONAL_FORMAT(wavpack, WAVPACK, [AC_CHECK_HEADER(wavpack/wavpack.h, [AC_CHECK_LIB(wavpack, WavpackGetSampleRate, WAVPACK_LIBS="$WAVPACK_LIBS -lwavpack",using_wavpack=no)], using_wavpack=no)]) - - - -AC_OPTIONAL_FORMAT(sndio, SNDIO, [AC_CHECK_HEADER(sndio.h, [AC_CHECK_LIB(sndio, sio_open, SNDIO_LIBS="$SNDIO_LIBS -lsndio",using_sndio=no)], using_sndio=no)]) - - - -AC_OPTIONAL_FORMAT(coreaudio, COREAUDIO, [AC_CHECK_HEADER(CoreAudio/CoreAudio.h, [COREAUDIO_LIBS="$COREAUDIO_LIBS -Wl,-framework,CoreAudio"], using_coreaudio=no)]) - - - -AC_OPTIONAL_FORMAT(alsa, ALSA, [AC_CHECK_HEADER(alsa/asoundlib.h, [AC_CHECK_LIB(asound, snd_pcm_open, ALSA_LIBS="$ALSA_LIBS -lasound",using_alsa=no)], using_alsa=no)]) - - - -AC_OPTIONAL_FORMAT(ao, AO, [AC_CHECK_HEADER(ao/ao.h, [AC_CHECK_LIB(ao, ao_play, AO_LIBS="$AO_LIBS -lao",using_ao=no)], using_ao=no)]) - - - -AC_OPTIONAL_FORMAT(pulseaudio, PULSEAUDIO, [AC_CHECK_HEADER(pulse/simple.h, [AC_CHECK_LIB(pulse, pa_simple_new, PULSEAUDIO_LIBS="$PULSEAUDIO_LIBS -lpulse -lpulse-simple",using_pulseaudio=no,"-lpulse-simple")], using_pulseaudio=no)]) - - -AC_OPTIONAL_FORMAT(waveaudio, WAVEAUDIO, [AC_CHECK_HEADER(mmsystem.h, [WAVEAUDIO_LIBS="$WAVEAUDIO_LIBS -lwinmm"], using_waveaudio=no, [[#include <windows.h>]])]) - -dnl When enable_dl_sndfile, do not let SOX_PATH_SNDFILE add libraries -dnl to be linked in (since they will be dlopen()'ed instead). -ac_sox_save_SNDFILE_LIBS="$LIBSNDFILE_LIBS" -SOX_PATH_SNDFILE(tmp_using_sndfile=$opt_default, tmp_using_sndfile=no) -AC_ARG_ENABLE(dl_sndfile, - AS_HELP_STRING([--enable-dl-sndfile], - [Dlopen sndfile instead of linking in.]), - enable_dl_sndfile=$enableval, enable_dl_sndfile=no) -if test "x$tmp_using_sndfile" = "xyes"; then - if test "x$using_libltdl" = "xyes" -a "x$enable_dl_sndfile" = "xyes"; then - AC_DEFINE(DL_LIBSNDFILE, 1, [Define to dlopen() sndfile.]) - dnl When enable_dl_sndfile, do not let SOX_PATH_SNDFILE add libraries - dnl to be linked in (since they will be dlopen()'ed instead). - LIBSNDFILE_LIBS="$ac_sox_save_SNDFILE_LIBS" - else - enable_dl_sndfile="no" - fi -fi -AC_OPTIONAL_FORMAT(sndfile, SNDFILE, [using_sndfile=$tmp_using_sndfile]) - - - -AC_OPTIONAL_FORMAT(oss, OSS, [AC_CHECK_HEADERS(sys/soundcard.h,, using_oss=no)]) - - - -AC_OPTIONAL_FORMAT(sunaudio, SUNAUDIO, [AC_CHECK_HEADERS(sys/audioio.h,, - [AC_CHECK_HEADERS(sun/audioio.h,, using_sunaudio=no)])]) - - - -# MP2/MP3 format depends on libmad || LAME || twolame -AC_OPTIONAL_FORMAT(mp3, MP3, [ - if test "$using_mad" != yes -a "$using_lame" != yes -a "$using_twolame" != yes; then - using_mp3=no - fi]) - - - -# GSM format depends on libgsm -AC_OPTIONAL_FORMAT(gsm, GSM, [using_gsm=$HAVE_LIBGSM]) - - - -# LPC10 format depends on liblpc10 -# No need to check; LPC10 is always found -AC_OPTIONAL_FORMAT(lpc10, LPC10) - - - -dnl Check if we want to disable all symlinks -AC_MSG_CHECKING([whether to enable symlinks]) -AC_ARG_ENABLE(symlinks, - AS_HELP_STRING([--disable-symlinks], [Don't make any symlinks to sox.]),,enable_symlinks=yes) -AC_MSG_RESULT($enable_symlinks) - -if test "$enable_symlinks" = "yes"; then - SYMLINKS=soxi - if test "" \ - -o "$using_alsa" = yes \ - -o "$using_ao" = yes \ - -o "$using_coreaudio" = yes \ - -o "$using_oss" = yes \ - -o "$using_pulseaudio" = yes \ - -o "$using_sndio" = yes \ - -o "$using_sunaudio" = yes \ - -o "$using_waveaudio" = yes \ - ; then - SYMLINKS="$SYMLINKS play rec" - fi -fi -AC_SUBST(SYMLINKS) - -AM_CONDITIONAL(STATIC_LIBSOX_ONLY, test "$enable_shared" = "no" -a "$enable_static" = "yes") +SOX_WITH_LIB([libltdl], [ltdl.h], [ltdl], [lt_dlinit]) + +SOX_WITH([ladspa], [Enable LADSPA plugin support], + [SOX_NEED_DL([${with_ladspa:+dyn}], [--with-ladspa])], + [AC_DEFINE([HAVE_LADSPA_H], [1], [Define if LADSPA support is enabled]) + AS_CASE([$HAVE_LADSPA], [yes], [LADSPA_PATH='${libdir}/ladspa'], + [LADSPA_PATH=$HAVE_LADSPA])], [], [], [*], [$HAVE_LIBLTDL]) +AC_SUBST([LADSPA_PATH]) +SOX_REPORT([other], [LADSPA effect plugins], [$HAVE_LADSPA]) + +dnl Various libraries + +SOX_WITH_LIB([magic], [magic.h], [magic], [magic_open]) +SOX_CHECK_LIB([ZLIB], [zlib.h], [z], [uncompress]) +SOX_WITH_LIB([png], [png.h], [png], [png_set_rows], [], [], [], [$ZLIB_LIBS]) +SOX_WITH_LIB([id3tag], [id3tag.h], [id3tag], [id3_file_open]) +SOX_WITH_LIB([libgsm], [gsm/gsm.h gsm.h], [gsm], [gsm_create]) + +dnl Optional formats + +SOX_ENABLE([formats], [Default setting for optional formats], + [SOX_NEED_DL([$HAVE_FORMATS], [--enable-formats=dyn])], [], [], [], [dyn]) + +SOX_DL_LIB([opencore-amrnb], [opencore-amrnb/interf_dec.h], [opencore-amrnb], + [Decoder_Interface_init]) +SOX_FMT_REQ([amrnb], [OPENCORE_AMRNB]) + +SOX_DL_LIB([opencore-amrwb], [opencore-amrwb/dec_if.h], [opencore-amrwb], + [D_IF_init]) +SOX_DL_LIB([vo-amrwbenc], [vo-amrwbenc/enc_if.h], [vo-amrwbenc], [E_IF_init]) +SOX_FMT_REQ([amrwb], [OPENCORE_AMRWB VO_AMRWBENC]) + +SOX_FMT_PKG([flac], [flac]) +SOX_FMT_REQ([gsm], [LIBGSM]) + +SOX_CHECK_LIB([LIBLPC10], [lpc10.h], [lpc10], [create_lpc10_encoder_state], + [LPC10_LIBS="$LIBLPC10_LIBS"], + [LPC10_LIBS=../lpc10/liblpc10.la; LPC10_CFLAGS='-I${top_srcdir}/lpc10']) +AM_CONDITIONAL([HAVE_LIBLPC10], [test $HAVE_LIBLPC10 = yes]) +SOX_FMT([lpc10]) + +SOX_DL_LIB([mad], [mad.h], [mad], [mad_stream_buffer]) +SOX_DL_LIB([lame], [lame/lame.h lame.h], [mp3lame], [lame_init]) +SOX_DL_LIB([twolame], [twolame.h], [twolame], [twolame_init]) +SOX_FMT_REQ([mp3], [MAD LAME TWOLAME]) +MP3_LIBS="$MP3_LIBS $ID3TAG_LIBS" + +SOX_FMT_PKG([oggvorbis], [ogg vorbis vorbisenc vorbisfile]) +SOX_FMT_PKG([opus], [opusfile]) + +SOX_DL_LIB([libsndfile], [sndfile.h], [sndfile], [sf_open_virtual]) +SOX_FMT_REQ([sndfile], [LIBSNDFILE]) + +SOX_FMT_LIB([wavpack], [wavpack/wavpack.h], [wavpack], [WavpackGetSampleRate]) + +dnl Audio devices + +SOX_FMT_LIB([alsa], [alsa/asoundlib.h], [asound], [snd_pcm_open], [], [], + [devices]) +SOX_FMT_LIB([ao], [ao/ao.h], [ao], [ao_play], [], [], [devices]) +SOX_FMT_LIB([coreaudio], [CoreAudio/CoreAudio.h], [], [AudioDeviceStart], [], + [[-Wl,-framework,CoreAudio]], [devices]) +SOX_FMT_LIB([pulseaudio], [pulse/simple.h], [pulse], [pa_simple_new], [], + [-lpulse-simple], [devices]) +SOX_FMT_HEADERS([oss], [sys/soundcard.h], [], [devices]) +SOX_FMT_LIB([sndio], [sndio.h], [sndio], [sio_open], [], [], [devices]) +SOX_FMT_HEADERS([sunaudio], [sys/audioio.h sun/audioio.h], [], [devices]) +SOX_FMT_LIB([waveaudio], [mmsystem.h], [winmm], [waveOutOpen], [windows.h], [], + [devices]) + +dnl Check if we want to create symlinks +AC_ARG_ENABLE([symlinks], + AS_HELP_STRING([--enable-symlinks], [Create soxi/play/rec links (YES/no)])) +AS_CASE([${enable_symlinks:=yes}], [yes], [ + SYMLINKS=soxi + AS_IF([test -n "$sox_devices"], [SYMLINKS="$SYMLINKS play rec"])]) +AC_SUBST([SYMLINKS]) +SOX_REPORT([build], [symlinks], [${SYMLINKS:-none}]) + +AM_CONDITIONAL(STATIC_LIBSOX_ONLY, test "$enable_shared" = "no") dnl Generate output files. AC_CONFIG_FILES(Makefile src/Makefile lpc10/Makefile sox.pc) AC_OUTPUT -if test "$using_lpc10" != "no"; then - if test "$found_liblpc10" = "yes"; then - lpc10_option="(external)" - else - lpc10_option="(in-tree)" - fi -fi +SOX_REPORT_SECTION([build], [Build options:]) +SOX_REPORT_SECTION([with_libs], [Optional libraries:], [sort]) +SOX_REPORT_SECTION([formats], [Optional formats:], [sort]) +SOX_REPORT_SECTION([devices], [Audio devices:], [sort]) +SOX_REPORT_SECTION([other], [Other options:]) +SOX_REPORT_PRINT -# Report configuration. -echo -echo "BUILD OPTIONS" -echo "Distro name ...............${with_distro:-unspecified}" -echo "Dynamic loading support....$using_libltdl" -echo "Pkg-config location........$pkgconfigdir" -echo "Symlinks enabled...........${SYMLINKS:-no}" -echo -echo "OPTIONAL DEVICE DRIVERS" -echo "ao (Xiph)..................$using_ao" -echo "alsa (Linux)...............$using_alsa" -echo "coreaudio (Mac OS X).......$using_coreaudio" -echo "sndio (OpenBSD)............$using_sndio" -echo "oss........................$using_oss" -echo "pulseaudio.................$using_pulseaudio" -echo "sunaudio...................$using_sunaudio" -echo "waveaudio (MS-Windows).....$using_waveaudio" -echo -echo "OPTIONAL FILE FORMATS" -echo "amrnb......................$using_amrnb" -if test "x$using_amrnb" = "xyes"; then -echo " dlopen amrnb..............${enable_dl_opencore_amrnb:-no}" -fi -echo "amrwb......................$using_amrwb" -if test "x$using_amrwb" = "xyes"; then -echo " dlopen opencore-amrwb.....${enable_dl_opencore_amrwb:-no}" -echo " dlopen vo-amrwbenc........${enable_dl_vo_amrwbenc:-no}" -fi -echo "flac.......................$using_flac" -echo "gsm........................$using_gsm" -echo "lpc10......................$using_lpc10 $lpc10_option" -echo "mp2/mp3....................$using_mp3" -echo " id3tag....................$using_id3tag" -echo " lame......................$using_lame" -if test "x$using_lame" = "xyes"; then -echo " dlopen lame...............$enable_dl_lame" -fi -echo " mad.......................$using_mad" -if test "x$using_mad" = "xyes"; then -echo " dlopen mad................$enable_dl_mad" -fi -echo " twolame...................$using_twolame" -if test "x$using_twolame" = "xyes"; then -echo " dlopen twolame............$enable_dl_twolame" -fi -echo "oggvorbis..................$using_oggvorbis" -echo "opus.......................$using_opus" -echo "sndfile....................$using_sndfile" -if test "x$using_sndfile" = "xyes"; then -echo " dlopen sndfile............$enable_dl_sndfile" -fi -echo "wavpack....................$using_wavpack" -echo -echo "OTHER OPTIONS" -echo "ladspa effects.............$using_ladspa" -echo "magic support..............$using_magic" -echo "png support................$using_png" -if test "x$OPENMP_CFLAGS" = "x"; then -echo "OpenMP support.............no" -else -echo "OpenMP support.............yes, $OPENMP_CFLAGS" -fi echo -echo "Configure finished. Do 'make -s && make install' to compile and install SoX." +echo "Configure finished. Run 'make' to compile SoX." echo diff --git a/m4/optional-fmt.m4 b/m4/optional-fmt.m4 deleted file mode 100644 index d0623c83..00000000 --- a/m4/optional-fmt.m4 +++ /dev/null @@ -1,49 +0,0 @@ -dnl SoX autoconf macro: optional format (c) 2009 ro...@us... -dnl -dnl This program is free software; you can redistribute it and/or modify it -dnl under the terms of the GNU General Public License as published by the -dnl Free Software Foundation; either version 2 of the License, or (at your -dnl option) any later version. -dnl -dnl This program is distributed in the hope that it will be useful, but -dnl WITHOUT ANY WARRANTY; without even the implied warranty of -dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -dnl Public License for more details. -dnl -dnl You should have received a copy of the GNU General Public License along -dnl with this program; if not, write to the Free Software Foundation, Inc., -dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -dnl $1 package name e.g. flac -dnl $2 package name in conditionals e.g. FLAC -dnl $3 using check - -AC_DEFUN([AC_OPTIONAL_FORMAT], - [AC_ARG_WITH($1, AC_HELP_STRING([--with-$1=dyn], [load $1 dynamically])) - using_$1=$with_$1 - if test "_$with_$1" = _dyn; then - if test $using_libltdl != yes; then - AC_MSG_FAILURE([not using libltdl; cannot load $1 dynamically]) - fi - elif test "_$with_$1" = _; then - using_$1=$opt_default - elif test "_$with_$1" != _yes -a "_$with_$1" != _no; then - AC_MSG_FAILURE([invalid selection --with-$1=$with_$1]) - fi - if test _$with_$1 != _no; then - $3 - if test _$with_$1 != _ -a $using_$1 = no; then - AC_MSG_FAILURE([cannot find $1]) - fi - fi - if test "$using_$1" != no; then - AC_DEFINE(HAVE_$2, 1, [Define to 1 if you have $1.]) - if test "$using_$1" = yes; then - AC_DEFINE(STATIC_$2, 1, [Define to 1 if you have static $1.]) - fi - fi - AM_CONDITIONAL(HAVE_$2, test $using_$1 != no) - AM_CONDITIONAL(STATIC_$2, test $using_$1 = yes) - AC_SUBST($2_CFLAGS) - AC_SUBST($2_LIBS)] -) diff --git a/m4/sndfile.m4 b/m4/sndfile.m4 deleted file mode 100644 index 8fc026c9..00000000 --- a/m4/sndfile.m4 +++ /dev/null @@ -1,65 +0,0 @@ -dnl SOX_PATH_SNDFILE -dnl Based off of shout.m4 from xiph package. -dnl cba...@us... 1-3-2007 -dnl -dnl Original Authors: -dnl Jack Moffitt <ja...@ic...> 08-06-2001 -dnl Rewritten for libshout 2 -dnl Brendan Cully <br...@xi...> 20030612 -dnl -# SOX_PATH_SNDFILE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -# Test for libsndfile, and define LIBSNDFILE_CFLAGS and LIBSNDFILE_LIBS -AC_DEFUN([SOX_PATH_SNDFILE], -[dnl -# Step 1: Use pkg-config if available -m4_ifdef([PKG_CHECK_MODULES], - [# PKG_CHECK_MODULES available - PKG_CHECK_MODULES(LIBSNDFILE, sndfile, have_sndfile="maybe", - have_sndfile="no")], - [# Step 2: use pkg-config manually if available - AC_PATH_PROG([PKGCONFIG], [pkg-config], [none]) - if test "$PKGCONFIG" != "none" && `$PKGCONFIG --exists sndfile` - then - LIBSNDFILE_CFLAGS=`$PKGCONFIG --cflags sndfile`" $ac_save_SNDFILE_CFLAGS $LIBSNDFILE_CFLAGS" - LIBSNDFILE_LIBS=`$PKGCONFIG --libs sndfile`" $ac_save_SNDFILE_LIBS $LIBSNDFILE_LIBS" - have_sndfile="maybe" - else - have_sndfile="no" - fi - ]) - -# Step 3: Even if pkg-config says its not installed, user may have -# manually installed libraries with no -kg-config support. -if test "$have_sndfile" = "no" -then - # As a last resort, just hope that header and ilbrary can - # be found in default paths and that it doesn't need - # to link against any other libraries. - LIBSNDFILE_LIBS="-lsndfile $LIBSNDFILE_LIBS" - have_sndfile="maybe" -fi - -# Even if pkg-config or similar told us how to find library, -# do a safety check. -if test "$have_sndfile" != "no" -then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $LIBSNDFILE_CFLAGS" - LIBS="$LIBS $LIBSNDFILE_LIBS" - AC_CHECK_HEADER([sndfile.h], [ - AC_DEFINE([HAVE_SNDFILE_H], 1, [Define if you have <sndfile.h>]) - AC_CHECK_FUNC([sf_open_virtual], [ - ifelse([$1], , :, [$1]) - have_sndfile="yes" - ]) - ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" -fi - -if test "$have_sndfile" != "yes" -then - ifelse([$2], , :, [$2]) -fi -])dnl SOX_PATH_SNDFILE diff --git a/src/Makefile.am b/src/Makefile.am index 5d6c8db4..75195fee 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -87,8 +87,8 @@ libsox_la_LDFLAGS = -no-undefined -version-info @SHLIB_VERSION@ \ -export-symbols-regex '^(sox_.*|lsx_(([cm]|re)alloc.*|check_read_params|(close|open)_dllibrary|(debug(_more|_most)?|fail|report|warn)_impl|eof|error|fail_errno|filelength|find_(enum_(text|value)|file_extension)|flush|getopt(_init)?|lpc10_(create_(de|en)coder_state|(de|en)code)|raw(read|write)|read(_b_buf|buf|chars)|rewind|seeki|sigfigs3p?|strcasecmp|strdup|tell|unreadb|write(b|_b_buf|buf|s)))$$' if HAVE_LIBLTDL - libsox_la_CFLAGS += $(LTDLINCL) - libsox_la_LDFLAGS += $(LIBLTDL) + libsox_la_CFLAGS += $(LIBLTDL_CFLAGS) + libsox_la_LIBADD += $(LIBLTDL_LIBS) endif commit 5b82135e3f5737a079d804973c62c396b15ce3f8 Author: Mans Rullgard <ma...@ma...> Date: Tue Aug 11 08:22:53 2020 +0100 build: add useful m4 macros diff --git a/m4/sox.m4 b/m4/sox.m4 new file mode 100644 index 00000000..9c7113cd --- /dev/null +++ b/m4/sox.m4 @@ -0,0 +1,282 @@ +dnl +dnl SOX_NAME_TAG(NAME-TAG, [BODY]) +dnl +dnl Define using m4_pushdef: +dnl N First word of NAME-TAG +dnl L N sanitised for use as shell variable +dnl T Second word of NAME-TAG, if present, else +dnl L converted to upper case +dnl +dnl If BODY is provided, substitute it and m4_popdef N, L, and T. +dnl Otherwise, leave these macros defined. +dnl +AC_DEFUN([SOX_NAME_TAG], [ + m4_pushdef([nt], m4_split(m4_normalize($1))) + m4_pushdef([N], m4_car(nt)) + m4_pushdef([L], m4_bpatsubst(N, [[^0-9A-Za-z]], [_])) + m4_pushdef([T], m4_default(m4_argn([2], nt), m4_toupper(L))) + m4_popdef([nt]) + m4_ifnblank([$2], [$2 m4_popdef([N], [L], [T])]) +]) + +dnl +dnl SOX_INCLUDE(HEADER) +dnl +dnl Expands to "#include <HEADER>" followed by a newline. +dnl +AC_DEFUN([SOX_INCLUDE], [[#include <]]$1[[> +]]) + +dnl +dnl SOX_CHECK_HEADERS(HEADERS, [IF-FOUND], [IF-NOT-FOUND], [EXTRA-HEADERS]) +dnl +dnl Check for presence of headers. +dnl +dnl HEADERS: List of headers to try, stopping when one is found +dnl IF-FOUND: Action to take if one of HEADERS is found +dnl IF-NOT-FOUND: Action to take if none of HEADERS are found +dnl EXTRA-HEADERS: Additional headers to #include +dnl +dnl Outputs: +dnl HAVE_HEADER: Set with AC_DEFINE to 1 for the first header found +dnl +AC_DEFUN([SOX_CHECK_HEADERS], [ + sox_ch_found=no + AC_CHECK_HEADERS([$1], [sox_ch_found=yes; break], [], + [m4_map([SOX_INCLUDE], m4_split([$4]))]) + AS_CASE([$sox_ch_found], [yes], [$2], [$3]) +]) + +dnl +dnl SOX_CHECK_LIB(TAG, HEADERS, LIB, FUNC, [IF-FOUND], [IF-NOT-FOUND], +dnl [EXTRA-HEADERS], [EXTRA-LIBS]) +dnl +dnl Check for presence of headers and library. +dnl +dnl Arguments: +dnl TAG Prefix/suffix for output variable +dnl HEADERS List of headers searched with SOX_CHECK_HEADERS +dnl LIB Name of library to check +dnl FUNC Name of function in library +dnl IF-FOUND Action to take on success +dnl IF-NOT-FOUND Action to take on failure +dnl EXTRA-HEADERS Passed to SOX_CHECK_HEADERS +dnl EXTRA-LIBS Additional libraries (-lLIB) and linker flags +dnl +dnl Outputs: +dnl HAVE_TAG AC_DEFINE to 1 if found +dnl Set shell variable to 'yes' on success, 'no' otherwise +dnl TAG_LIBS Add '-lLIB EXTRA-LIBS' to start of shell variable +dnl +AC_DEFUN([SOX_CHECK_LIB], [ + m4_pushdef([lib], [m4_default([$3], [c])]) + m4_pushdef([flags], [m4_ifnblank([$3], [-l$3 $8], [$8])]) + HAVE_[]$1=no + SOX_CHECK_HEADERS([$2], [AC_CHECK_LIB(lib, [$4], + [HAVE_[]$1=yes], [], [$8 $$1[]_LIBS])], [], [$7]) + AS_CASE([$HAVE_[]$1], [yes], [ + AC_DEFINE([HAVE_]$1, [1], [Define if $4 exists in ]flags) + $1[]_LIBS="flags $$1[]_LIBS" + $5], [$6]) + AC_SUBST($1[_CFLAGS]) + AC_SUBST($1[_LIBS]) + m4_popdef([lib], [flags]) +]) + +dnl +dnl SOX_NEED_DL(VAL, DEP) +dnl +dnl Exit with an error message if VAL equals 'dyn' and dynamic loading +dnl is not available. +dnl +AC_DEFUN([SOX_NEED_DL], [ + AS_CASE([$1-$HAVE_LIBLTDL], [dyn-no], + [AC_MSG_ERROR([dynamic loading not available, needed by $2])]) +]) + +dnl +dnl SOX_ARG(TYPE, NAME, DESC, [TEST], [IF-YES], [IF-NO], [IF-FAIL], +dnl [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_ARG], [SOX_NAME_TAG([$2], [ + m4_pushdef([ATU], m4_toupper($1)) + m4_pushdef([ATL], m4_tolower($1)) + m4_pushdef([optdef], m4_default([$9], [yes])) + m4_pushdef([opts], m4_split([yes no $8])) + m4_pushdef([opts_help], m4_bpatsubst(m4_apply([m4_join], [[/], opts]), + \<optdef\>, m4_toupper(optdef))) + m4_pushdef([opts_sh], m4_apply([m4_join], [[|], opts])) + m4_indir(AC_ARG_[]ATU, [N], AS_HELP_STRING([--ATL-N], [$3 (opts_help)])) + HAVE_[]T=${ATL[]_[]L:-optdef} + AS_CASE([$HAVE_[]T], + [no], [], + [opts_sh], [$4], + [AC_MSG_ERROR([invalid value for --ATL-N])]) + AS_CASE([$ATL[]_[]L-$HAVE_[]T], + [no-*|-no], [$6], + [*-no], [$7], + [$5]) + AM_CONDITIONAL([HAVE_]T, [test $HAVE_[]T != no]) + m4_popdef([ATU], [ATL], [optdef], [opts], [opts_help], [opts_sh]) +])]) + +dnl +dnl SOX_ENABLE(NAME, DESC, [TEST], [IF-YES], [IF-NO], [IF-FAIL], +dnl [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_ENABLE], [ + SOX_ARG([enable], $@) +]) + +dnl +dnl SOX_WITH(NAME, DESC, [TEST], [IF-YES], [IF-NO], [IF-FAIL], +dnl [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_WITH], [ + SOX_ARG([with], $@) +]) + +dnl +dnl SOX_WITH_LIB(NAME, HEADERS, LIB, FUNC, [IF-FOUND], [IF-NOT-FOUND], +dnl [INCLUDES], [EXTRA-LIBS], [EXTRA-CHOICES], [DEFAULT]) +dnl +AC_DEFUN([SOX_WITH_LIB], [SOX_NAME_TAG([$1], [ + SOX_WITH([$1], [Use N], + [AS_CASE([$HAVE_[]T], [yes|dyn], [sox_wl=$3], [sox_wl=$HAVE_[]T]) + SOX_CHECK_LIB([T], [$2], [$sox_wl], [$4], [], [], [$7], [$8])], + [$5], [$6], [AC_MSG_FAILURE([N not found])], + [$9 *], m4_argn([8], m4_shift2($@))) dnl BSD m4 can't count to 10 + SOX_REPORT([with_libs], [N], [$HAVE_]T) +])]) + +dnl +dnl SOX_DL_LIB(NAME, HEADERS, LIB, FUNC, [IF-STATIC], [IF-DL], [IF-NOT-FOUND], +dnl [EXTRA-HEADERS], [EXTRA-LIBS]) +dnl +AC_DEFUN([SOX_DL_LIB], [SOX_NAME_TAG([$1], [ + SOX_NEED_DL([$with_[]L], [--with-L=dyn]) + SOX_WITH_LIB([$1], [$2], [$3], [$4], [], [$7], [$8], [$9], [dyn]) + AS_CASE([$with_[]L-$HAVE_[]T], + [dyn-*], [AC_DEFINE([DL_]T, 1, [Define to dlopen() ]N) + HAVE_[]T=dyn; $6], + [*-yes], [$5]) +])]) + +dnl +dnl SOX_REQUIRE1(FEATURE, TAG, [IF-FOUND]) +dnl +AC_DEFUN([SOX_REQUIRE1], [ + AS_CASE([$HAVE_$1], + [yes|dyn], [$2_CFLAGS="$$2_CFLAGS $$1_CFLAGS"; $3]) + AS_CASE([$HAVE_$1], + [yes], [$2_LIBS="$$2_LIBS $$1_LIBS"]) +]) + +dnl +dnl SOX_REQUIRE(FEATURES, TAG, [IF-NOT-FOUND]) +dnl +AC_DEFUN([SOX_REQUIRE], [ + sox_req_found=no + m4_map_args_w([$1], [SOX_REQUIRE1(], [, $2, [sox_req_found=yes])]) + AS_CASE([$sox_req_found], [yes], [], [$3]) +]) + +dnl +dnl SOX_FMT(NAME, [TEST], [SECTION]) +dnl +dnl Add an optional format with corresponding --enable flag. +dnl +dnl Arguments: +dnl NAME Name of format, passed to SOX_NAME_TAG setting N and T +dnl TEST Test for prerequisites, must set HAVE_T to 'no' if not met +dnl SECTION Section format belongs to, default 'formats' +dnl +dnl Outputs: +dnl HAVE_T Set shell variable to 'yes', 'no', or 'dyn' +dnl AC_DEFINE and AM_CONDITIONAL true if not 'no' +dnl STATIC_T AC_DEFINE and AM_CONDITIONAL true if HAVE_T = 'yes' +dnl +AC_DEFUN([SOX_FMT], [SOX_NAME_TAG([$1], [ + m4_pushdef([section], m4_default([$3], [formats])) + SOX_NEED_DL([$with_[]L], [--enable-L=dyn]) + SOX_ENABLE([$1], [Enable N], [$2], + [AC_DEFINE([HAVE_]T, [1], [Define if ]N[ is enabled]) + sox_[]section="$sox_[]section L"], [], + [AC_MSG_FAILURE([N not available])], + [dyn], [${HAVE_FORMATS:-yes}]) + AS_CASE([$HAVE_[]T], + [yes], [AC_DEFINE([STATIC_]T, [1], [Define if ]N[ is linked in])]) + AC_SUBST(T[_CFLAGS]) + AC_SUBST(T[_LIBS]) + AM_CONDITIONAL([STATIC_]T, [test $HAVE_[]T = yes]) + SOX_REPORT(section, [N], [$HAVE_]T) + m4_popdef([section]) +])]) + +dnl +dnl SOX_FMT_REQ(NAME, FEATURES, [SECTION]) +dnl +AC_DEFUN([SOX_FMT_REQ], [ + SOX_FMT([$1], [SOX_REQUIRE([$2], [T], [HAVE_[]T=no])], [$3]) +]) + +dnl +dnl SOX_FMT_HEADERS(NAME, HEADERS, [INCLUDES], [SECTION]) +dnl +dnl Wrapper for SOX_FMT with SOX_CHECK_HEADERS as test. +dnl +AC_DEFUN([SOX_FMT_HEADERS], [ + SOX_FMT([$1], [SOX_CHECK_HEADERS([$2], [], [HAVE_[]T=no], [$3])], [$4]) +]) + +dnl +dnl SOX_FMT_LIB(NAME, HEADERS, LIB, FUNC, [INCLUDES], [EXTRA-LIBS], [SECTION]) +dnl +dnl Wrapper for SOX_FMT with SOX_CHECK_LIB as test. +dnl +AC_DEFUN([SOX_FMT_LIB], [ + SOX_FMT([$1], [ + SOX_CHECK_LIB([LIB[]T], [$2], [$3], [$4], [], [HAVE_[]T=no], [$5], [$6]) + T[]_CFLAGS=$LIB[]T[]_CFLAGS + T[]_LIBS=$LIB[]T[]_LIBS], [$7]) +]) + +dnl +dnl SOX_FMT_PKG(NAME, PKG) +dnl +AC_DEFUN([SOX_FMT_PKG], [ + SOX_FMT([$1], [PKG_CHECK_MODULES(T, [$2], [], [HAVE_[]T=no])]) +]) + +dnl +dnl SOX_REPORT_SECTION(NAME, TITLE, [FILTER]) +dnl +AC_DEFUN([SOX_REPORT_SECTION], [ + m4_append([sox_rep_sections], [$1], [ ]) + m4_define([sox_rep_title_$1], [$2]) + m4_define([sox_rep_filter_$1], m4_default([$3], [cat])) +]) + +dnl +dnl SOX_REPORT(SECTION, DESC, VAL) +dnl +AC_DEFUN([SOX_REPORT], [ + m4_append([sox_rep_text_$1], AS_HELP_STRING([$2], [$3]), m4_newline) +]) + +dnl +dnl SOX_REPORT_PRINT1(SECTION) +dnl +AC_DEFUN([SOX_REPORT_PRINT1], [ + echo; echo "sox_rep_title_$1" + sox_rep_filter_$1 <<EOF +sox_rep_text_$1 +EOF +]) + +dnl +dnl SOX_REPORT_PRINT +dnl +AC_DEFUN([SOX_REPORT_PRINT], [ + m4_map([SOX_REPORT_PRINT1], m4_split(sox_rep_sections)) +]) commit 857d55a9c72b2d72c84a995ecfc780c0f379640a Author: Mans Rullgard <ma...@ma...> Date: Wed Aug 19 11:48:32 2020 +0100 build: simplify win32 glob selection Move the files to a subdirectory so the header can be activated by simply adding a -I flag, avoiding ugly ifdefs. Use this version if a native glob is missing and FindFirstFileA() exists. This is more accurate than matching the system name since some mingw versions do have a glob implementation. diff --git a/configure.ac b/configure.ac index 5d5a9866..b9822490 100644 --- a/configure.ac +++ b/configure.ac @@ -13,10 +13,7 @@ AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR(sox.1) AC_CONFIG_HEADERS([src/soxconfig.h]) -dnl Find target architecture -AC_CANONICAL_TARGET - -AM_INIT_AUTOMAKE +AM_INIT_AUTOMAKE([subdir-objects]) AM_SILENT_RULES([yes]) LT_INIT([win32-dll]) @@ -62,16 +59,12 @@ dnl Check for OpenMP AC_OPENMP CFLAGS="$CFLAGS $OPENMP_CFLAGS" -using_win32_glob="no" -case $target in - *mingw*) - using_win32_glob="yes" - ;; -esac -if test "$using_win32_glob" = yes; then - AC_DEFINE([HAVE_WIN32_GLOB_H], 1, [Define to 1 to use win32 glob]) +if test "$ac_cv_header_glob_h" != yes; then + AC_CHECK_FUNC([FindFirstFileA], [ + AC_DEFINE([HAVE_GLOB_H], [1], [Define if glob.h exists]) + HAVE_WIN32_GLOB=yes]) fi -AM_CONDITIONAL(HAVE_WIN32_GLOB, test x$using_win32_glob = xyes) +AM_CONDITIONAL(HAVE_WIN32_GLOB, test "$HAVE_WIN32_GLOB" = yes) AC_ARG_WITH(dyn-default,AS_HELP_STRING([--with-dyn-default],[Default to loading optional formats dynamically]),opt_default=dyn,opt_default=yes) diff --git a/src/Makefile.am b/src/Makefile.am index ca3cb310..5d6c8db4 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -27,7 +27,8 @@ lib_LTLIBRARIES = libsox.la include_HEADERS = sox.h sox_SOURCES = sox.c if HAVE_WIN32_GLOB -sox_SOURCES += win32-glob.c win32-glob.h +sox_SOURCES += win32/glob.c win32/glob.h +AM_CPPFLAGS += -I$(srcdir)/win32 endif sox_LDADD = libsox.la example0_SOURCES = example0.c diff --git a/src/sox.c b/src/sox.c index 43e3d707..03f9571a 100644 --- a/src/sox.c +++ b/src/sox.c @@ -37,10 +37,7 @@ #include <sys/types.h> #include <time.h> -#if defined(HAVE_WIN32_GLOB_H) - #include "win32-glob.h" - #define HAVE_GLOB_H 1 -#elif defined(HAVE_GLOB_H) +#if defined(HAVE_GLOB_H) #include <glob.h> #endif diff --git a/src/win32-glob.c b/src/win32/glob.c similarity index 99% rename from src/win32-glob.c rename to src/win32/glob.c index 58d72231..d1cf3755 100644 --- a/src/win32-glob.c +++ b/src/win32/glob.c @@ -15,7 +15,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "win32-glob.h" +#include "glob.h" #include <stdlib.h> #include <stdio.h> #include <errno.h> diff --git a/src/win32-glob.h b/src/win32/glob.h similarity index 100% rename from src/win32-glob.h rename to src/win32/glob.h commit c29f5d181746a23432e81493ebd0202b1485c07b Author: Mans Rullgard <ma...@ma...> Date: Sat Aug 15 23:21:07 2020 +0100 configure: reorder things more logically Place autofoo setup first, followed by general tests for programs and flags. Checks for libraries and SoX features come last. diff --git a/configure.ac b/configure.ac index 7e5c959b..5d5a9866 100644 --- a/configure.ac +++ b/configure.ac @@ -5,7 +5,13 @@ LT_PREREQ(2.4) AC_INIT(SoX, 14.4.3git, sox...@li...) +dnl Increase version when binary compatibility with previous version is broken +SHLIB_VERSION=3:0:0 +AC_SUBST(SHLIB_VERSION) + AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_SRCDIR(sox.1) +AC_CONFIG_HEADERS([src/soxconfig.h]) dnl Find target architecture AC_CANONICAL_TARGET @@ -13,11 +19,11 @@ AC_CANONICAL_TARGET AM_INIT_AUTOMAKE AM_SILENT_RULES([yes]) -dnl create a config.h file (Automake will add -DHAVE_CONFIG_H) -AC_CONFIG_HEADERS([src/soxconfig.h]) +LT_INIT([win32-dll]) -dnl Check we have the right srcdir -AC_CONFIG_SRCDIR(sox.1) +AC_ARG_WITH(distro, + AS_HELP_STRING([--with-distro=name], [Provide distribution name]), + AC_DEFINE_UNQUOTED(DISTRO, ["$with_distro"], [Distribution name])) dnl Checks for programs. AC_PROG_CC @@ -25,53 +31,12 @@ AM_PROG_CC_C_O AC_PROG_INSTALL AC_PROG_LN_S -AX_APPEND_LINK_FLAGS([-Wl,--as-needed]) - -dnl Increase version when binary compatibility with previous version is broken -SHLIB_VERSION=3:0:0 -AC_SUBST(SHLIB_VERSION) - -AC_ARG_WITH(libltdl, - AS_HELP_STRING([--without-libltdl], - [Don't try to use libltdl for external dynamic library support]), - with_libltdl=$withval, with_libltdl=default) - -if test "$with_libltdl" = "default"; then - dnl Default to no libltdl support when building only static libraries - if test "$enable_shared" != "no"; then - using_libltdl=yes - else - using_libltdl=no - fi - with_libltdl="yes" -else - using_libltdl=$with_libltdl -fi - -LT_INIT([win32-dll]) - -AC_ARG_WITH(dyn-default,AS_HELP_STRING([--with-dyn-default],[Default to loading optional formats dynamically]),opt_default=dyn,opt_default=yes) - PKG_PROG_PKG_CONFIG PKG_INSTALLDIR -using_win32_glob="no" -case $target in - *mingw*) - using_win32_glob="yes" - ;; -esac -if test "$using_win32_glob" = yes; then - AC_DEFINE([HAVE_WIN32_GLOB_H], 1, [Define to 1 to use win32 glob]) -fi -AM_CONDITIONAL(HAVE_WIN32_GLOB, test x$using_win32_glob = xyes) - AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong]) AX_APPEND_COMPILE_FLAGS([-Wall -Wmissing-prototypes -Wstrict-prototypes]) - -AC_ARG_WITH(distro, - AS_HELP_STRING([--with-distro=name], [Provide distribution name]), - AC_DEFINE_UNQUOTED(DISTRO, ["$with_distro"], [Distribution name])) +AX_APPEND_LINK_FLAGS([-Wl,--as-needed]) dnl Check for system dependent features. AC_C_BIGENDIAN @@ -93,6 +58,40 @@ dnl Large File Support AC_SYS_LARGEFILE AC_FUNC_FSEEKO +dnl Check for OpenMP +AC_OPENMP +CFLAGS="$CFLAGS $OPENMP_CFLAGS" + +using_win32_glob="no" +case $target in + *mingw*) + using_win32_glob="yes" + ;; +esac +if test "$using_win32_glob" = yes; then + AC_DEFINE([HAVE_WIN32_GLOB_H], 1, [Define to 1 to use win32 glob]) +fi +AM_CONDITIONAL(HAVE_WIN32_GLOB, test x$using_win32_glob = xyes) + +AC_ARG_WITH(dyn-default,AS_HELP_STRING([--with-dyn-default],[Default to loading optional formats dynamically]),opt_default=dyn,opt_default=yes) + +AC_ARG_WITH(libltdl, + AS_HELP_STRING([--without-libltdl], + [Don't try to use libltdl for external dynamic library support]), + with_libltdl=$withval, with_libltdl=default) + +if test "$with_libltdl" = "default"; then + dnl Default to no libltdl support when building only static libraries + if test "$enable_shared" != "no"; then + using_libltdl=yes + else + using_libltdl=no + fi + with_libltdl="yes" +else + using_libltdl=$with_libltdl +fi + dnl Check if ltdl should be enabled. if test "$using_libltdl" != "no"; then AC_CHECK_HEADERS(ltdl.h, @@ -106,11 +105,6 @@ AM_CONDITIONAL(HAVE_LIBLTDL, test x$using_libltdl = xyes) AC_SUBST(LIBLTDL) -dnl Check for OpenMP -AC_OPENMP -CFLAGS="$CFLAGS $OPENMP_CFLAGS" - - dnl Check for magic library AC_ARG_WITH(magic, AS_HELP_STRING([--without-magic], commit 6eeef9147666726250ffcc1877a19e2bf7600c23 Author: Mans Rullgard <ma...@ma...> Date: Sun Aug 16 18:03:02 2020 +0100 build: drop libtool target Contrary to the comment, it is not automatically invoked, and the only dependency is on ltmain.sh which nobody should be editing. diff --git a/Makefile.am b/Makefile.am index 5f3bc998..ab025cdb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -121,7 +121,3 @@ uninstall-hook: $(RM) $(DESTDIR)$(mandir)/man1/play.1 $(RM) $(DESTDIR)$(mandir)/man1/rec.1 $(RM) $(DESTDIR)$(mandir)/man7/soxeffect.7 - -# Automatically update libtool script if it gets out-of-date -libtool: $(LIBTOOL_DEPS) - $(SHELL) ./config.status --recheck diff --git a/configure.ac b/configure.ac index 24bd72f4..7e5c959b 100644 --- a/configure.ac +++ b/configure.ac @@ -49,7 +49,6 @@ else fi LT_INIT([win32-dll]) -AC_SUBST(LIBTOOL_DEPS) AC_ARG_WITH(dyn-default,AS_HELP_STRING([--with-dyn-default],[Default to loading optional formats dynamically]),opt_default=dyn,opt_default=yes) commit 505421aa571d9a383a81ac33df1b1cb14911c915 Author: Mans Rullgard <ma...@ma...> Date: Sun Aug 16 17:21:25 2020 +0100 build: drop dlopen from LT_INIT options The -dlopen flag of libtool is not used, so the dlopen option is not needed. diff --git a/configure.ac b/configure.ac index c9966615..24bd72f4 100644 --- a/configure.ac +++ b/configure.ac @@ -48,7 +48,7 @@ else using_libltdl=$with_libltdl fi -LT_INIT([dlopen win32-dll]) +LT_INIT([win32-dll]) AC_SUBST(LIBTOOL_DEPS) AC_ARG_WITH(dyn-default,AS_HELP_STRING([--with-dyn-default],[Default to loading optional formats dynamically]),opt_default=dyn,opt_default=yes) commit 005f95a8a7bfe7eefe5e83430e588ff0a0181624 Author: Mans Rullgard <ma...@ma...> Date: Sun Aug 16 15:38:58 2020 +0100 build: drop --enable-debug option The default CFLAGS already includes -g. If other flags are desired, they can be easily provided by setting CFLAGS in the environment. diff --git a/configure.ac b/configure.ac index 11ddbccd..c9966615 100644 --- a/configure.ac +++ b/configure.ac @@ -67,19 +67,6 @@ if test "$using_win32_glob" = yes; then fi AM_CONDITIONAL(HAVE_WIN32_GLOB, test x$using_win32_glob = xyes) -dnl Debugging -AC_MSG_CHECKING([whether to make a debug build]) -AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug], [make a debug build])) -AC_MSG_RESULT($enable_debug) -if test "$enable_debug" = "yes"; then - CFLAGS="-g" - if test "$GCC" = "yes"; then - CFLAGS="$CFLAGS -ggdb" - fi -else - enable_debug=no -fi - AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong]) AX_APPEND_COMPILE_FLAGS([-Wall -Wmissing-prototypes -Wstrict-prototypes]) @@ -498,7 +485,6 @@ fi # Report configuration. echo echo "BUILD OPTIONS" -echo "Debugging build............$enable_debug" echo "Distro name ...............${with_distro:-unspecified}" echo "Dynamic loading support....$using_libltdl" echo "Pkg-config location........$pkgconfigdir" commit 46c1fe663ca22da1a63d4b924da255e8248eeaf8 Author: Mans Rullgard <ma...@ma...> Date: Sat Aug 15 23:48:33 2020 +0100 build: drop --enable-silent-libtool option The silent automake setting already suppresses the libtool blather. This option has no effect, so drop it. diff --git a/configure.ac b/configure.ac index 32756cc6..11ddbccd 100644 --- a/configure.ac +++ b/configure.ac @@ -107,16 +107,6 @@ dnl Large File Support AC_SYS_LARGEFILE AC_FUNC_FSEEKO -dnl Allow libtool to be silenced -AC_MSG_CHECKING([whether libtool should be silenced]) -AC_ARG_ENABLE(silent-libtool, - AS_HELP_STRING([--disable-silent-libtool], [Verbose libtool]),,enable_silent_libtool=yes) -AC_MSG_RESULT($enable_silent_libtool) -if test "$enable_silent_libtool" = "yes"; then - LIBTOOLFLAGS=--silent -fi -AC_SUBST(LIBTOOLFLAGS) - dnl Check if ltdl should be enabled. if test "$using_libltdl" != "no"; then AC_CHECK_HEADERS(ltdl.h, diff --git a/src/Makefile.am b/src/Makefile.am index cab1c2d2..ca3cb310 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -15,9 +15,6 @@ AM_LDFLAGS = -avoid-version -module AM_CPPFLAGS += -DPKGLIBDIR="\"$(pkglibdir)\"" endif -# Pass flags from --enable-silent-libtool -LIBTOOL = @LIBTOOL@ @LIBTOOLFLAGS@ - ######################### commit d04651c022050df470e52f02c577d7c5d8153c96 Author: Mans Rullgard <ma...@ma...> Date: Sat Aug 15 23:01:54 2020 +0100 build: add warning options whenever supported Other compilers support gcc-style warning options. Use them whenever possible. diff --git a/configure.ac b/configure.ac index a6280720..32756cc6 100644 --- a/configure.ac +++ b/configure.ac @@ -81,11 +81,7 @@ else fi AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong]) - -dnl Extra CFLAGS if we have gcc -if test "$GCC" = "yes"; then - CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wstrict-prototypes" -fi +AX_APPEND_COMPILE_FLAGS([-Wall -Wmissing-prototypes -Wstrict-prototypes]) AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=name], [Provide distribution name]), commit d9362c987c01acb1dad91dd6f567242bdfa69899 Author: Mans Rullgard <ma...@ma...> Date: Sat Aug 15 22:14:05 2020 +0100 build: drop -z defs linker option The -z defs option is useful as a guard against accidentally leaving symbols unresolved, but it breaks linking shared libraries on OpenBSD. Figuring out when it is safe is more trouble than it's worth. Drop it entirely. diff --git a/configure.ac b/configure.ac index 56f1d657..a6280720 100644 --- a/configure.ac +++ b/configure.ac @@ -85,13 +85,6 @@ AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong]) dnl Extra CFLAGS if we have gcc if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wstrict-prototypes" - - dnl Define stricter policy on GNU/Linux, all symbols must be resolved - case $target in - *linux* | *solaris*) - LDFLAGS="$LDFLAGS -Wl,-z,defs" - ;; - esac fi AC_ARG_WITH(distro, commit ec5425bcb5d813e69111032e28a0a9149c356fed Author: Mans Rullgard <ma...@ma...> Date: Sat Aug 15 22:37:30 2020 +0100 build: always pass -no-undefined to libtool The -no-undefined flag is only required when building Windows DLLs. Since we do not have any unresolved symbols in libsox, always using the flag is harmless and simpler. diff --git a/configure.ac b/configure.ac index 6e34442c..56f1d657 100644 --- a/configure.ac +++ b/configure.ac @@ -91,12 +91,8 @@ if test "$GCC" = "yes"; then *linux* | *solaris*) LDFLAGS="$LDFLAGS -Wl,-z,defs" ;; - *os2* | *cygwin* | *mingw*) - APP_LDFLAGS="-no-undefined" - ;; esac fi -AC_SUBST(APP_LDFLAGS) AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=name], [Provide distribution name]), diff --git a/src/Makefile.am b/src/Makefile.am index ae289e0f..cab1c2d2 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -85,7 +85,7 @@ libsox_la_LIBADD += @MAGIC_LIBS@ endif libsox_la_CFLAGS = -libsox_la_LDFLAGS = @APP_LDFLAGS@ -version-info @SHLIB_VERSION@ \ +libsox_la_LDFLAGS = -no-undefined -version-info @SHLIB_VERSION@ \ -export-symbols-regex '^(sox_.*|lsx_(([cm]|re)alloc.*|check_read_params|(close|open)_dllibrary|(debug(_more|_most)?|fail|report|warn)_impl|eof|e... [truncated message content] |
From: Mans R. <ma...@us...> - 2020-08-22 11:20:27
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, master has been updated via 3518bcd92416e7cf71ee9a863695a518f3de4e52 (commit) via 1571c87c9519923b30d16c92f17515228c983924 (commit) via 266f197cddf52fab1fdb8336498026cca0c5de5a (commit) from c430d8fcbea071d56735527a35a980132b9b66c2 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 3518bcd92416e7cf71ee9a863695a518f3de4e52 Author: Mans Rullgard <ma...@ma...> Date: Thu Aug 20 23:41:23 2020 +0100 define sox_intN_t types using standard intN_t All modern systems, even msvc, have the C99 stdint.h integer types. Replace the guesswork with typedefs using these types. This fixes numerous warnings on some systems where both long and long long are 64-bit. diff --git a/src/sox.h b/src/sox.h index 0e785454..b13bad9c 100644 --- a/src/sox.h +++ b/src/sox.h @@ -22,6 +22,7 @@ LSX_ and lsx_ symbols should not be used by libSoX-based applications. #include <limits.h> #include <stdarg.h> #include <stddef.h> +#include <stdint.h> #if defined(__cplusplus) extern "C" { @@ -387,108 +388,49 @@ Basic typedefs: Client API: Signed twos-complement 8-bit type. Typically defined as signed char. */ -#if SCHAR_MAX==127 && SCHAR_MIN==(-128) -typedef signed char sox_int8_t; -#elif CHAR_MAX==127 && CHAR_MIN==(-128) -typedef char sox_int8_t; -#else -#error Unable to determine an appropriate definition for sox_int8_t. -#endif +typedef int8_t sox_int8_t; /** Client API: Unsigned 8-bit type. Typically defined as unsigned char. */ -#if UCHAR_MAX==0xff -typedef unsigned char sox_uint8_t; -#elif CHAR_MAX==0xff && CHAR_MIN==0 -typedef char sox_uint8_t; -#else -#error Unable to determine an appropriate definition for sox_uint8_t. -#endif +typedef uint8_t sox_uint8_t; /** Client API: Signed twos-complement 16-bit type. Typically defined as short. */ -#if SHRT_MAX==32767 && SHRT_MIN==(-32768) -typedef short sox_int16_t; -#elif INT_MAX==32767 && INT_MIN==(-32768) -typedef int sox_int16_t; -#else -#error Unable to determine an appropriate definition for sox_int16_t. -#endif +typedef int16_t sox_int16_t; /** Client API: Unsigned 16-bit type. Typically defined as unsigned short. */ -#if USHRT_MAX==0xffff -typedef unsigned short sox_uint16_t; -#elif UINT_MAX==0xffff -typedef unsigned int sox_uint16_t; -#else -#error Unable to determine an appropriate definition for sox_uint16_t. -#endif +typedef uint16_t sox_uint16_t; /** Client API: Signed twos-complement 32-bit type. Typically defined as int. */ -#if INT_MAX==2147483647 && INT_MIN==(-2147483647-1) -typedef int sox_int32_t; -#elif LONG_MAX==2147483647 && LONG_MIN==(-2147483647-1) -typedef long sox_int32_t; -#else -#error Unable to determine an appropriate definition for sox_int32_t. -#endif +typedef int32_t sox_int32_t; /** Client API: Unsigned 32-bit type. Typically defined as unsigned int. */ -#if UINT_MAX==0xffffffff -typedef unsigned int sox_uint32_t; -#elif ULONG_MAX==0xffffffff -typedef unsigned long sox_uint32_t; -#else -#error Unable to determine an appropriate definition for sox_uint32_t. -#endif +typedef uint32_t sox_uint32_t; /** Client API: Signed twos-complement 64-bit type. Typically defined as long or long long. */ -#if LONG_MAX==9223372036854775807 && LONG_MIN==(-9223372036854775807-1) -typedef long sox_int64_t; -#elif defined(_MSC_VER) -typedef __int64 sox_int64_t; -#else -typedef long long sox_int64_t; -#endif +typedef int64_t sox_int64_t; /** Client API: Unsigned 64-bit type. Typically defined as unsigned long or unsigned long long. */ -#if ULONG_MAX==0xffffffffffffffff -typedef unsigned long sox_uint64_t; -#elif defined(_MSC_VER) -typedef unsigned __int64 sox_uint64_t; -#else -typedef unsigned long long sox_uint64_t; -#endif - -#ifndef _DOXYGEN_ -lsx_static_assert(sizeof(sox_int8_t)==1, sox_int8_size); -lsx_static_assert(sizeof(sox_uint8_t)==1, sox_uint8_size); -lsx_static_assert(sizeof(sox_int16_t)==2, sox_int16_size); -lsx_static_assert(sizeof(sox_uint16_t)==2, sox_uint16_size); -lsx_static_assert(sizeof(sox_int32_t)==4, sox_int32_size); -lsx_static_assert(sizeof(sox_uint32_t)==4, sox_uint32_size); -lsx_static_assert(sizeof(sox_int64_t)==8, sox_int64_size); -lsx_static_assert(sizeof(sox_uint64_t)==8, sox_uint64_size); -#endif +typedef uint64_t sox_uint64_t; /** Client API: commit 1571c87c9519923b30d16c92f17515228c983924 Author: Mans Rullgard <ma...@ma...> Date: Fri Aug 21 16:00:01 2020 +0100 use cdecl attribute only on i386 The cdecl attribute is meaningful only on i386, and some compilers warn if it is used elsewhere. Guard it with the appropriate ifdef. diff --git a/src/sox.h b/src/sox.h index 307c8798..0e785454 100644 --- a/src/sox.h +++ b/src/sox.h @@ -57,7 +57,7 @@ Plugins API: Attribute required on all functions exported by libSoX and on all function pointer types used by the libSoX API. */ -#ifdef __GNUC__ +#if defined __GNUC__ && defined __i386__ #define LSX_API __attribute__ ((cdecl)) /* libSoX function */ #elif _MSC_VER #define LSX_API __cdecl /* libSoX function */ commit 266f197cddf52fab1fdb8336498026cca0c5de5a Author: Mans Rullgard <ma...@ma...> Date: Fri Aug 21 00:49:36 2020 +0100 flac: fix error message on encoder init failure diff --git a/src/flac.c b/src/flac.c index 07f45c1b..4abcc580 100644 --- a/src/flac.c +++ b/src/flac.c @@ -390,7 +390,7 @@ static FLAC__StreamEncoderTellStatus flac_stream_encoder_tell_callback(FLAC__Str static int start_write(sox_format_t * const ft) { priv_t * p = (priv_t *)ft->priv; - FLAC__StreamEncoderState status; + FLAC__StreamEncoderInitStatus status; unsigned compression_level = MAX_COMPRESSION; /* Default to "best" */ if (ft->encoding.compression != HUGE_VAL) { @@ -515,8 +515,8 @@ static int start_write(sox_format_t * const ft) status = FLAC__stream_encoder_init_stream(p->encoder, flac_stream_encoder_write_callback, flac_stream_encoder_seek_callback, flac_stream_encoder_tell_callback, flac_stream_encoder_metadata_callback, ft); - if (status != FLAC__STREAM_ENCODER_OK) { - lsx_fail_errno(ft, SOX_EINVAL, "%s", FLAC__StreamEncoderStateString[status]); + if (status != FLAC__STREAM_ENCODER_INIT_STATUS_OK) { + lsx_fail_errno(ft, SOX_EINVAL, "%s", FLAC__StreamEncoderInitStatusString[status]); return SOX_EOF; } return SOX_SUCCESS; ----------------------------------------------------------------------- Summary of changes: src/flac.c | 6 ++--- src/sox.h | 78 ++++++++------------------------------------------------------ 2 files changed, 13 insertions(+), 71 deletions(-) hooks/post-receive -- sox |
From: Mans R. <ma...@us...> - 2020-08-21 20:10:15
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, new-build has been updated via 5ce4b3f8ac7640aed14235955dd5703ababf3204 (commit) via 059b0978db71788b76625dd0c56054ea0149dfb2 (commit) from affc279d142f843f3f50d4718798303396ee24b4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 5ce4b3f8ac7640aed14235955dd5703ababf3204 Author: Mans Rullgard <ma...@ma...> Date: Thu Aug 20 23:41:23 2020 +0100 define sox_intN_t types using standard intN_t All modern systems, even msvc, have the C99 stdint.h integer types. Replace the guesswork with typedefs using these types. This fixes numerous warnings on some system where both long and long long are 64-bit. diff --git a/src/sox.h b/src/sox.h index 0e785454..b13bad9c 100644 --- a/src/sox.h +++ b/src/sox.h @@ -22,6 +22,7 @@ LSX_ and lsx_ symbols should not be used by libSoX-based applications. #include <limits.h> #include <stdarg.h> #include <stddef.h> +#include <stdint.h> #if defined(__cplusplus) extern "C" { @@ -387,108 +388,49 @@ Basic typedefs: Client API: Signed twos-complement 8-bit type. Typically defined as signed char. */ -#if SCHAR_MAX==127 && SCHAR_MIN==(-128) -typedef signed char sox_int8_t; -#elif CHAR_MAX==127 && CHAR_MIN==(-128) -typedef char sox_int8_t; -#else -#error Unable to determine an appropriate definition for sox_int8_t. -#endif +typedef int8_t sox_int8_t; /** Client API: Unsigned 8-bit type. Typically defined as unsigned char. */ -#if UCHAR_MAX==0xff -typedef unsigned char sox_uint8_t; -#elif CHAR_MAX==0xff && CHAR_MIN==0 -typedef char sox_uint8_t; -#else -#error Unable to determine an appropriate definition for sox_uint8_t. -#endif +typedef uint8_t sox_uint8_t; /** Client API: Signed twos-complement 16-bit type. Typically defined as short. */ -#if SHRT_MAX==32767 && SHRT_MIN==(-32768) -typedef short sox_int16_t; -#elif INT_MAX==32767 && INT_MIN==(-32768) -typedef int sox_int16_t; -#else -#error Unable to determine an appropriate definition for sox_int16_t. -#endif +typedef int16_t sox_int16_t; /** Client API: Unsigned 16-bit type. Typically defined as unsigned short. */ -#if USHRT_MAX==0xffff -typedef unsigned short sox_uint16_t; -#elif UINT_MAX==0xffff -typedef unsigned int sox_uint16_t; -#else -#error Unable to determine an appropriate definition for sox_uint16_t. -#endif +typedef uint16_t sox_uint16_t; /** Client API: Signed twos-complement 32-bit type. Typically defined as int. */ -#if INT_MAX==2147483647 && INT_MIN==(-2147483647-1) -typedef int sox_int32_t; -#elif LONG_MAX==2147483647 && LONG_MIN==(-2147483647-1) -typedef long sox_int32_t; -#else -#error Unable to determine an appropriate definition for sox_int32_t. -#endif +typedef int32_t sox_int32_t; /** Client API: Unsigned 32-bit type. Typically defined as unsigned int. */ -#if UINT_MAX==0xffffffff -typedef unsigned int sox_uint32_t; -#elif ULONG_MAX==0xffffffff -typedef unsigned long sox_uint32_t; -#else -#error Unable to determine an appropriate definition for sox_uint32_t. -#endif +typedef uint32_t sox_uint32_t; /** Client API: Signed twos-complement 64-bit type. Typically defined as long or long long. */ -#if LONG_MAX==9223372036854775807 && LONG_MIN==(-9223372036854775807-1) -typedef long sox_int64_t; -#elif defined(_MSC_VER) -typedef __int64 sox_int64_t; -#else -typedef long long sox_int64_t; -#endif +typedef int64_t sox_int64_t; /** Client API: Unsigned 64-bit type. Typically defined as unsigned long or unsigned long long. */ -#if ULONG_MAX==0xffffffffffffffff -typedef unsigned long sox_uint64_t; -#elif defined(_MSC_VER) -typedef unsigned __int64 sox_uint64_t; -#else -typedef unsigned long long sox_uint64_t; -#endif - -#ifndef _DOXYGEN_ -lsx_static_assert(sizeof(sox_int8_t)==1, sox_int8_size); -lsx_static_assert(sizeof(sox_uint8_t)==1, sox_uint8_size); -lsx_static_assert(sizeof(sox_int16_t)==2, sox_int16_size); -lsx_static_assert(sizeof(sox_uint16_t)==2, sox_uint16_size); -lsx_static_assert(sizeof(sox_int32_t)==4, sox_int32_size); -lsx_static_assert(sizeof(sox_uint32_t)==4, sox_uint32_size); -lsx_static_assert(sizeof(sox_int64_t)==8, sox_int64_size); -lsx_static_assert(sizeof(sox_uint64_t)==8, sox_uint64_size); -#endif +typedef uint64_t sox_uint64_t; /** Client API: commit 059b0978db71788b76625dd0c56054ea0149dfb2 Author: Mans Rullgard <ma...@ma...> Date: Fri Aug 21 16:00:01 2020 +0100 use cdecl attribute only on i386 The cdecl attribute is meaningful only on i386, and some compilers warn if it is used elsewhere. Guard it with the appropriate ifdef. diff --git a/src/sox.h b/src/sox.h index 307c8798..0e785454 100644 --- a/src/sox.h +++ b/src/sox.h @@ -57,7 +57,7 @@ Plugins API: Attribute required on all functions exported by libSoX and on all function pointer types used by the libSoX API. */ -#ifdef __GNUC__ +#if defined __GNUC__ && defined __i386__ #define LSX_API __attribute__ ((cdecl)) /* libSoX function */ #elif _MSC_VER #define LSX_API __cdecl /* libSoX function */ ----------------------------------------------------------------------- Summary of changes: src/sox.h | 78 ++++++++------------------------------------------------------- 1 file changed, 10 insertions(+), 68 deletions(-) hooks/post-receive -- sox |
From: Mans R. <ma...@us...> - 2020-08-21 17:08:19
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sox". The branch, new-build has been updated via affc279d142f843f3f50d4718798303396ee24b4 (commit) from 2ace6a9b3d18c737d866a6ec01693f5cdbaca8b0 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit affc279d142f843f3f50d4718798303396ee24b4 Author: Mans Rullgard <ma...@ma...> Date: Fri Aug 21 17:53:43 2020 +0100 configure: work around inability of OpenBSD m4 to count diff --git a/m4/sox.m4 b/m4/sox.m4 index a566e443..f0321197 100644 --- a/m4/sox.m4 +++ b/m4/sox.m4 @@ -145,7 +145,7 @@ AC_DEFUN([SOX_WITH_LIB], [SOX_NAME_TAG([$1], [ [AS_CASE([$HAVE_[]T], [yes|dyn], [sox_wl=$3], [sox_wl=$HAVE_[]T]) SOX_CHECK_LIB([T], [$2], [$sox_wl], [$4], [], [], [$7], [$8])], [$5], [$6], [AC_MSG_FAILURE([N not found])], - [$9 *], m4_argn(10, $@)) + [$9 *], m4_argn([8], m4_shift2($@))) dnl OpenBSD m4 can't count SOX_REPORT([with_libs], [N], [$HAVE_]T) ])]) ----------------------------------------------------------------------- Summary of changes: m4/sox.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- sox |