From bd951f9a47adec1040e6fabcce1ee592e3be219b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Heusipp?= Date: Sun, 11 Sep 2022 14:01:11 +0200 Subject: [PATCH] Make sndfile.h independent of build system variables Fixes . --- CMakeLists.txt | 4 +-- Makefile.am | 5 ++- cmake/SndFileChecks.cmake | 29 --------------- configure.ac | 55 +---------------------------- docs/new_file_type_howto.md | 2 +- include/{sndfile.h.in => sndfile.h} | 4 +-- src/common.c | 6 ---- src/config.h.cmake | 9 ----- src/file_io.c | 2 +- tests/pedantic-header-test.sh.in | 2 +- 10 files changed, 9 insertions(+), 109 deletions(-) rename include/{sndfile.h.in => sndfile.h} (99%) diff --git a/CMakeLists.txt b/CMakeLists.txt index ae8ebec7..904a1a20 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -220,8 +220,6 @@ feature_summary (WHAT ALL) configure_file (src/config.h.cmake src/config.h) -configure_file (include/sndfile.h.in include/sndfile.h) - if (INSTALL_PKGCONFIG_MODULE) set (prefix ${CMAKE_INSTALL_PREFIX}) @@ -250,8 +248,8 @@ endif () # Public libsndfile headers set (sndfile_HDRS + include/sndfile.h include/sndfile.hh - ${CMAKE_CURRENT_BINARY_DIR}/include/sndfile.h ) # diff --git a/Makefile.am b/Makefile.am index 5efbf9a8..7bd00d3a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -46,7 +46,7 @@ BUILT_SOURCES = src/test_endswap.c SYMBOL_FILES = src/Symbols.gnu-binutils src/Symbols.darwin src/libsndfile-1.def src/Symbols.os2 src/Symbols.static -EXTRA_DIST += include/sndfile.h.in src/config.h.in src/test_endswap.tpl src/test_endswap.def \ +EXTRA_DIST += src/config.h.in src/test_endswap.tpl src/test_endswap.def \ $(SYMBOL_FILES) src/create_symbols_file.py src/binheader_writef_check.py \ src/GSM610/README src/GSM610/COPYRIGHT src/GSM610/ChangeLog \ src/G72x/README src/G72x/README.original src/G72x/ChangeLog \ @@ -62,8 +62,7 @@ endif #=============================================================================== lib_LTLIBRARIES = src/libsndfile.la -include_HEADERS = include/sndfile.hh -nodist_include_HEADERS = include/sndfile.h +include_HEADERS = include/sndfile.h include/sndfile.hh src_libsndfile_la_CFLAGS = $(EXTERNAL_XIPH_CFLAGS) $(MPEG_CFLAGS) # MinGW requires -no-undefined if a DLL is to be built. src_libsndfile_la_LDFLAGS = -no-undefined -version-info $(SHARED_VERSION_INFO) $(SHLIB_VERSION_ARG) diff --git a/cmake/SndFileChecks.cmake b/cmake/SndFileChecks.cmake index 2e09ba6f..19c7b4b9 100644 --- a/cmake/SndFileChecks.cmake +++ b/cmake/SndFileChecks.cmake @@ -16,13 +16,6 @@ if (LARGE_FILES_DEFINITIONS) add_definitions(${LARGE_FILES_DEFINITIONS}) endif () -if (WIN32) - set(TYPEOF_SF_COUNT_T __int64) -else () - set(TYPEOF_SF_COUNT_T int64_t) -endif () -set (SF_COUNT_MAX 0x7fffffffffffffffll) - if (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") find_package (Sndio) elseif (NOT WIN32) @@ -121,28 +114,6 @@ if (ENABLE_TESTING) check_type_size (void* SIZEOF_VOIDP) endif() -if ((SIZEOF_OFF_T EQUAL 8) OR (SIZEOF_LOFF_T EQUAL 8) OR (SIZEOF_OFF64_T EQUAL 8)) - set (TYPEOF_SF_COUNT_T "int64_t") - set (SF_COUNT_MAX "0x7FFFFFFFFFFFFFFFLL") - set (SIZEOF_SF_COUNT_T 8) -else () - if (WIN32) - set (TYPEOF_SF_COUNT_T "__int64") - set (SF_COUNT_MAX "0x7FFFFFFFFFFFFFFFLL") - set (SIZEOF_SF_COUNT_T 8) - else () - message ("") - message ("*** The configure process has determined that this system is capable") - message ("*** of Large File Support but has not been able to find a type which") - message ("*** is an unambiguous 64 bit file offset.") - message ("*** Please contact the author to help resolve this problem.") - message ("") - message (FATAL_ERROR "Bad file offset type.") - endif () -endif () - -check_type_size (${TYPEOF_SF_COUNT_T} SIZEOF_SF_COUNT_T) - if (NOT WIN32) check_library_exists (m floor "" LIBM_REQUIRED) if (LIBM_REQUIRED) diff --git a/configure.ac b/configure.ac index a4c776d7..95756a11 100644 --- a/configure.ac +++ b/configure.ac @@ -194,12 +194,6 @@ AC_CHECK_SIZEOF([size_t], [4]) AC_CHECK_SIZEOF([int64_t], [8]) AC_CHECK_SIZEOF([long long], [8]) -dnl ==================================================================================== -dnl Find an appropriate type for sf_count_t. -dnl On systems supporting files larger than 2 Gig, sf_count_t must be a 64 bit value. -dnl Unfortunately there is more than one way of ensuring this so need to do some -dnl pretty rigourous testing here. - dnl Check for common 64 bit file offset types. AC_CHECK_SIZEOF([off_t], [1]) @@ -209,25 +203,12 @@ AS_IF([test "x$enable_largefile:$ac_cv_sizeof_off_t" = "xno:8"], [ AS_CASE([$host_os], [mingw32*], [ - TYPEOF_SF_COUNT_T="__int64" - SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL" - SIZEOF_SF_COUNT_T=8 AC_DEFINE([__USE_MINGW_ANSI_STDIO], [1], [Set to 1 to use C99 printf/snprintf in MinGW.]) ], - [linux-android*], [ - TYPEOF_SF_COUNT_T="int64_t" - SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL" - SIZEOF_SF_COUNT_T=8 - ], - [ - SIZEOF_SF_COUNT_T=0 AS_IF([test "x$ac_cv_sizeof_off_t" = "x8"], [ dnl If sizeof (off_t) is 8, no further checking is needed. - TYPEOF_SF_COUNT_T="int64_t" - SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL" - SIZEOF_SF_COUNT_T=8 ], [ dnl Save the old sizeof (off_t) value and then unset it to see if it dnl changes when Large File Support is enabled. @@ -246,43 +227,9 @@ AS_CASE([$host_os], ]) AC_CHECK_SIZEOF(off_t,1) - - AS_IF([test "x$ac_cv_sizeof_off_t" = "x8"], [ - TYPEOF_SF_COUNT_T="int64_t" - SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL" - SIZEOF_SF_COUNT_T=8 - ], [test "x$TYPEOF_SF_COUNT_T" = "xunknown"], [ - AS_ECHO([""]) - AS_ECHO(["*** The configure process has determined that this system is capable"]) - AS_ECHO(["*** of Large File Support but has not been able to find a type which"]) - AS_ECHO(["*** is an unambiguous 64 bit file offset."]) - AS_ECHO(["*** Please contact the author to help resolve this problem."]) - AS_ECHO([""]) - AC_MSG_ERROR([[Bad file offset type.]]) - ]) ]) ]) -AS_CASE([$host_vendor], - [vita], [ - TYPEOF_SF_COUNT_T="int64_t" - SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL" - SIZEOF_SF_COUNT_T=8 - ]) - -AS_IF([test "x$SIZEOF_SF_COUNT_T" = "x4"], [ - SF_COUNT_MAX="0x7FFFFFFF" - ]) - -AC_DEFINE_UNQUOTED([TYPEOF_SF_COUNT_T], [${TYPEOF_SF_COUNT_T}], [Set to long if unknown.]) -AC_SUBST(TYPEOF_SF_COUNT_T) - -AC_DEFINE_UNQUOTED([SIZEOF_SF_COUNT_T], [${SIZEOF_SF_COUNT_T}], [Set to sizeof (long) if unknown.]) -AC_SUBST(SIZEOF_SF_COUNT_T) - -AC_DEFINE_UNQUOTED([SF_COUNT_MAX], [${SF_COUNT_MAX}], [Set to maximum allowed value of sf_count_t type.]) -AC_SUBST(SF_COUNT_MAX) - AC_TYPE_SSIZE_T dnl ==================================================================================== @@ -750,7 +697,7 @@ AC_SUBST(TEST_BINDIR) AC_CONFIG_FILES([ Makefile Octave/Makefile - src/version-metadata.rc include/sndfile.h + src/version-metadata.rc tests/test_wrapper.sh tests/pedantic-header-test.sh libsndfile.spec sndfile.pc Scripts/build-test-tarball.mk diff --git a/docs/new_file_type_howto.md b/docs/new_file_type_howto.md index 05853946..bb422081 100644 --- a/docs/new_file_type_howto.md +++ b/docs/new_file_type_howto.md @@ -55,7 +55,7 @@ to disable gcc optimisations and make debugging with gdb/ddd easier. Add a unique identifier for the new file type. -Edit src/sndfile.h.in and find the enum containing the SF_FORMAT_XXX identifiers. +Edit src/sndfile.h and find the enum containing the SF_FORMAT_XXX identifiers. Since you will be adding a major file type you should add your identifier to the top part of the list where the values are above 0x10000 in value. The easiest way to do this is to find the largest value in the list, add 0x10000 to it and diff --git a/include/sndfile.h.in b/include/sndfile.h similarity index 99% rename from include/sndfile.h.in rename to include/sndfile.h index 8842fd48..61eba6f4 100644 --- a/include/sndfile.h.in +++ b/include/sndfile.h @@ -365,9 +365,9 @@ typedef struct sf_private_tag SNDFILE ; ** and the Microsoft compiler. */ -typedef @TYPEOF_SF_COUNT_T@ sf_count_t ; +typedef int64_t sf_count_t ; #ifndef SF_COUNT_MAX -#define SF_COUNT_MAX @SF_COUNT_MAX@ +#define SF_COUNT_MAX 0x7FFFFFFFFFFFFFFFLL #endif diff --git a/src/common.c b/src/common.c index ddf621b0..40c26b97 100644 --- a/src/common.c +++ b/src/common.c @@ -540,8 +540,6 @@ header_put_le_int (SF_PRIVATE *psf, int x) psf->header.ptr [psf->header.indx++] = (x >> 24) ; } /* header_put_le_int */ -#if (SIZEOF_SF_COUNT_T == 8) - static inline void header_put_be_8byte (SF_PRIVATE *psf, sf_count_t x) { psf->header.ptr [psf->header.indx++] = (x >> 56) ; @@ -566,10 +564,6 @@ header_put_le_8byte (SF_PRIVATE *psf, sf_count_t x) psf->header.ptr [psf->header.indx++] = (x >> 56) ; } /* header_put_le_8byte */ -#else -#error "SIZEOF_SF_COUNT_T != 8" -#endif - int psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...) { va_list argptr ; diff --git a/src/config.h.cmake b/src/config.h.cmake index 2872e7d1..71fdb4f2 100644 --- a/src/config.h.cmake +++ b/src/config.h.cmake @@ -223,9 +223,6 @@ /* Define to the version of this package. */ #define PACKAGE_VERSION "@CPACK_PACKAGE_VERSION_FULL@" -/* Set to maximum allowed value of sf_count_t type. */ -#define SF_COUNT_MAX @SF_COUNT_MAX@ - /* The size of `double', as computed by sizeof. */ @SIZEOF_DOUBLE_CODE@ @@ -253,9 +250,6 @@ /* The size of `off_t', as computed by sizeof. */ @SIZEOF_OFF_T_CODE@ -/* Set to sizeof (long) if unknown. */ -@SIZEOF_SF_COUNT_T_CODE@ - /* The size of `short', as computed by sizeof. */ @SIZEOF_SHORT_CODE@ @@ -271,9 +265,6 @@ /* The size of `wchar_t', as computed by sizeof. */ @SIZEOF_WCHAR_T_CODE@ -/* Set to long if unknown. */ -#define TYPEOF_SF_COUNT_T @TYPEOF_SF_COUNT_T@ - /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE diff --git a/src/file_io.c b/src/file_io.c index 90c96085..b7f7ed77 100644 --- a/src/file_io.c +++ b/src/file_io.c @@ -505,7 +505,7 @@ psf_is_pipe (SF_PRIVATE *psf) static sf_count_t psf_get_filelen_fd (int fd) { -#if (SIZEOF_OFF_T == 4 && SIZEOF_SF_COUNT_T == 8 && HAVE_FSTAT64) +#if (SIZEOF_OFF_T == 4 && HAVE_FSTAT64) struct stat64 statbuf ; if (fstat64 (fd, &statbuf) == -1) diff --git a/tests/pedantic-header-test.sh.in b/tests/pedantic-header-test.sh.in index 283af645..561628dc 100644 --- a/tests/pedantic-header-test.sh.in +++ b/tests/pedantic-header-test.sh.in @@ -42,7 +42,7 @@ if test -n "@GCC_MAJOR_VERSION@" ; then CC=`echo "@CC@" | sed "s/.*shave cc //"` # Compile with -Werror and -pedantic. - $CC -std=c99 -Werror -pedantic -I@top_srcdir@/src -I@abs_top_builddir@/src -I@abs_top_builddir@/include -c @top_srcdir@/tests/sfversion.c -o /dev/null + $CC -std=c99 -Werror -pedantic -I@top_srcdir@/src -I@abs_top_builddir@/src -I@top_srcdir@/include -c @top_srcdir@/tests/sfversion.c -o /dev/null # Check compiler return status. if test $? -ne 0 ; then