Dear fellow users of SoX, I would like to kindly ask you to test a build system for SoX: the 'build' branch at https://github.com/janstary/sox/tree/build On the surface it is the same: ./configure && make (see INSTALL). On the inside, it is a complete overhaul. Branching from Mans's latest commit (the spectrogram fix), it consists of about 100 commits, should you want to read the whole story; here is the gist of it. It replaces the GNU auto* system with a simple, hand-written ./configure script, a straightforward Makefile, and a set of have-*.c micro-programs testing the availability of libraries. It "borrows" heavily (in fact, steals with love) from Ingo Schwarze's build system for the mandoc package. This has no dependency on anything besides sh(1) and cc(1). The main point is to get rid of the GNU autotools monster: Do we have strlen()? Can <stdint.h> be included? What of "gcc -v"? POSIX.1 came out more than fifteen years ago; all modern systems are close to that and we should be coding against that standard. Functionaly, this system detects the optional external formats and audio drivers the current autotools system tries to detect, but correctly, much faster, using elementary tools, and actualy respecting the results. The single exception is waveaudio, as I have no windows machine. A big change in the resulting build is this no longer builds or install libsox the library, as opposed to sox the binary. SoX itself seems to be the only user of that library. Looking into the entire collection of ports and packages of all the system below, I have found _two_ things using it. (Not to be confused with libsoxr, the resampling library extracted from sox by Rob Sykes, maintainer at the time.) Details in https://github.com/janstary/sox/issues/43 Another change is the dynamic loading of libraries with dlopen(), which I have completely dropped. Either have the library at build and link against it, or don't, like everyone else. (But libltdl is not completely gone, because the ladspa plugins need it.) Like gsm some years ago, the lpc codec is made an optional, external dependecy, as opposed the carrying a copy of its entire implementation. If you care about LPC as a format, look at https://github.com/janstary/lpc for a separate lib; note that the original LPC code (as opposed to the bundled subdir) has just been made available, upon asking, by the original author: https://github.com/jafingerhut/lpc10 While here, I have also done some cleaning, but nothing that would change SoX's actual audio behaviour. I have removed struct timeb, obsoleted ages ago and not even used here, the homegrown strcasecmp(), #ifdef HAVE_STDINT_H and other ancient cruft. See the git log for the lolz. I have been running and testing this for some time on OpenBSD/current (amd64, i386, arm64, armv7, powerpc, octeon) FreeBSD 14.1 (amd64) NetBSD 10.0 (amd64) macOS 14.5 (M1 MacBook Air) Debian 13.2 trixie (amd64) Solaris (SunOS 5.11) and everything I could test seems to work. That is to say, the build of sox and the detection of external libs as optional extra formats and drivers works; the actual audio signal processing code, which has its own problems, has not been touched. During all that, going through the individual formats, I have also reviewed the soxi(1) and soxformat(7) manpages, untouched for a decade, and synced them with reality, refactoring a bit, and rewriting in mdoc(7) not man(7). Please read them. (The monstrous sox(1) is for later.) Please test on every system you use SoX on. Please test the detection of every audio format and effect and driver you care about (or, better yet, test them all). If anything doesn't work as expected, please report here or open an issue: https://github.com/janstary/sox/issues Thank you, Jan _______________________________________________ Sox-users mailing list Sox-users@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/sox-users