netcdf-c/Makefile.am
Dennis Heimbigner 52a4ecad60 Move construction of VERSION file to end of the build
re: https://github.com/Unidata/netcdf-c/issues/2521

Charlie Zender has discovered that the netcdf created file VERSION
conflicts with the C++ version file on OSX case-insensitive file systems,
and maybe other case-insensitvie file systems.

Note:
1. Cmake does not create the VERSION file
2. The VERSION file is not installed
3. It turns out that the VERSION file is not required by the autoconf build.

It is possible that clients or package build system (e.g apt or brew)
might use the VERSION file, so we cannot delete it altogether.

So as a fix, we move the creation of the VERSION file to after the
build is complete by inserting a all-local hook into netcdf-c/Makefile.am.

# Misc. other changes
1. Suppressed warning by making use of the systeminfo command contingent on the platform being Windows.
2022-10-09 19:32:20 -06:00

228 lines
6.7 KiB
Makefile

## This is a automake file, part of Unidata's netCDF package.
# Copyright 2005-2018, see the COPYRIGHT file for more information.
# This is the main automake file for netCDF. It builds the different
# netcdf directories. Not all directories are built, depending on the
# options selected during configure.
# Ed Hartnett, Ward Fisher
# This directory stores libtool macros, put there by aclocal.
ACLOCAL_AMFLAGS = -I m4
##
# Turn off plugin directory during distcheck, see
# comment thread at https://github.com/Unidata/netcdf-c/pull/2348
# for more information.
##
AM_DISTCHECK_CONFIGURE_FLAGS = --without-plugin-dir
# These files get added to the distribution.
EXTRA_DIST = README.md COPYRIGHT INSTALL.md test_prog.c lib_flags.am \
cmake CMakeLists.txt COMPILE.cmake.txt config.h.cmake.in \
cmake_uninstall.cmake.in FixBundle.cmake.in nc-config.cmake.in \
RELEASE_NOTES.md CTestCustom.cmake CTestConfig.cmake.in \
libnetcdf.settings.in netCDFConfig.cmake.in CMakeInstallation.cmake \
test-driver-verbose test_common.in fuzz
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = netcdf.pc
# Does the user want to build and run unit tests?
if BUILD_UNIT_TESTS
UNIT_TEST = unit_test
endif # BUILD_UNIT_TESTS
# Does the user want to build the V2 API?
if BUILD_V2
V2_TEST = nctest
endif
# Does the user want to build ncgen/ncdump?
if BUILD_UTILITIES
NCGEN3 = ncgen3
NCGEN = ncgen
NCDUMP = ncdump
endif
# Does the user want to build the examples?
if BUILD_EXAMPLES
EXAMPLES = examples
endif
# Is the user building netCDF-4?
if USE_NETCDF4
LIBSRC4_DIR = libsrc4
endif
# Is the user building with HDF5?
# Note that USE_HDF5 does not imply USE_NETCDF4
if USE_HDF5
H5_TEST_DIR = h5_test
LIBHDF5 = libhdf5
if USE_HDF5
NC_TEST4 = nc_test4
endif
endif
# Build the dap2 client
if ENABLE_DAP
OCLIB = oc2
DAP2 = libdap2
NCDAP2TESTDIR = ncdap_test
endif
if ENABLE_DAP4
DAP4 = libdap4
XML = libncxml
NCDAP4TESTDIR = dap4_test
endif #DAP4
# Build PnetCDF
if USE_PNETCDF
LIBSRCP = libsrcp
endif
# Build HDF4 if desired.
if USE_HDF4
HDF4_TEST_DIR = hdf4_test
LIBHDF4 = libhdf4
endif
# Build Plugin support
if ENABLE_PLUGINS
NCPOCO = libncpoco
endif
# Build Cloud Storage if desired.
if ENABLE_NCZARR
ZARR_TEST_DIR = nczarr_test
ZARR = libnczarr
endif
# Optionally build test plugins
if ENABLE_PLUGINS
if ENABLE_FILTER_TESTING
PLUGIN_DIR = plugins
endif
endif
# If benchmarks were turned on, build and run a bunch more tests.
if BUILD_BENCHMARKS
BENCHMARKS_DIR = nc_perf
endif # BUILD_BENCHMARKS
# Define Test directories
if BUILD_TESTSETS
TESTDIRS = $(H5_TEST_DIR)
TESTDIRS += $(UNIT_TEST) $(V2_TEST) nc_test $(NC_TEST4)
TESTDIRS += $(BENCHMARKS_DIR) $(HDF4_TEST_DIR) $(NCDAP2TESTDIR) $(NCDAP4TESTDIR)
TESTDIRS += ${ZARR_TEST_DIR}
endif
# This is the list of subdirs for which Makefiles will be constructed
# and run. ncgen must come before ncdump, because their tests
# depend on it.
SUBDIRS = include ${XML} libdispatch libsrc $(LIBSRC4_DIR) \
$(LIBSRCP) $(LIBHDF4) $(LIBHDF5) $(OCLIB) $(DAP2) ${DAP4} \
${NCPOCO} ${ZARR} liblib \
$(NCGEN3) $(NCGEN) $(NCDUMP) ${PLUGIN_DIR} $(TESTDIRS) docs \
$(EXAMPLES)
# Remove these generated files, for a distclean.
DISTCLEANFILES = VERSION comps.txt test_prog libnetcdf.settings \
test_common.sh
# The nc-config script helps the user build programs with netCDF.
bin_SCRIPTS = nc-config
# install libnetcdf.settings in lib directory.
settingsdir = $(libdir)
settings_DATA = libnetcdf.settings
####
# Provide an entry to rebuild all the m4 generated files
# List of files to create: WARNING leave off the extension
####
MM4= ./nc_test/test_put ./nc_test/test_get ./nc_test/test_write \
./nc_test/test_read ./libsrc/netcdf ./libsrc/putget ./libsrc/ncx \
./libsrc/t_ncxx ./libsrc/attr
mm4::
for m in ${MM4} ; do \
b=`basename $$m` ; d=`dirname $$m`;\
pushd $$d; m4 -s $${b}.m4 > $${b}.c ; popd; done
#####
# If ENABLE_FORTRAN was turned on,
# we have new make targets, build-netcdf-fortran and
# install-netcdf-fortran.
#####
###
# build-netcdf-fortran
###
if BUILD_FORTRAN
build-netcdf-fortran:
echo "Downloading and Building NetCDF-Fortran"
chmod u+x $(abs_top_builddir)/postinstall.sh
sh -c "$(abs_top_builddir)/postinstall.sh -t autotools -a build"
###
# install-netcdf-fortran
###
install-netcdf-fortran:
echo "Installing NetCDF-Fortran"
chmod u+x $(abs_top_builddir)/postinstall.sh
sh -c "$(abs_top_builddir)/postinstall.sh -t autotools -a install"
endif
check_nc_config:
$(CC) `./nc-config --cflags` test_prog.c -o test_prog `./nc-config --libs`
./test_prog
install-data-hook:
@echo ''
@echo '+-------------------------------------------------------------+'
@echo '| Congratulations! You have successfully installed netCDF! |'
@echo '| |'
@echo '| You can use script "nc-config" to find out the relevant |'
@echo '| compiler options to build your application. Enter |'
@echo '| |'
@echo '| nc-config --help |'
@echo '| |'
@echo '| for additional information. |'
@echo '| |'
@echo '| CAUTION: |'
@echo '| |'
@echo '| If you have not already run "make check", then we strongly |'
@echo '| recommend you do so. It does not take very long. |'
@echo '| |'
@echo '| Before using netCDF to store important data, test your |'
@echo '| build with "make check". |'
@echo '| |'
@echo '| NetCDF is tested nightly on many platforms at Unidata |'
@echo '| but your platform is probably different in some ways. |'
@echo '| |'
@echo '| If any tests fail, please see the netCDF web site: |'
@echo '| https://www.unidata.ucar.edu/software/netcdf/ |'
@echo '| |'
@echo '| NetCDF is developed and maintained at the Unidata Program |'
@echo '| Center. Unidata provides a broad array of data and software |'
@echo '| tools for use in geoscience education and research. |'
@echo '| https://www.unidata.ucar.edu |'
@echo '+-------------------------------------------------------------+'
@echo ''
# Create the VERSION file after the build
# in case it is being used by packagers
all-local: liblib/libnetcdf.la
echo ${PACKAGE_VERSION} > VERSION
# Remove the VERSION file
CLEANFILES = VERSION