mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-12-09 07:32:32 +08:00
2dd5bbfe16
* commit '0b721858e46a317c370a24115032d5be41688f67': Make these scripts relocatable again: derive a relative path for the original installation prefix from the examples prefix. Use that relative path to locate the current installation prefix, always. Fall back to an absolute installation prefix if the relative path cannot be derived. Get the path to prefix right: needs a ../ to back out of subdirectory c/. Make this script relocatable again: derive a relative path for the original installation prefix from the examples prefix. Use that relative path to locate the current installation prefix, always. Fall back to an absolute installation prefix if the relative path cannot be derived. Let us override the examples directory using --with-examplesdir=DIR. This is handy for NetBSD where HDF5 examples are installed by convention in $prefix/share/examples/hdf5/ rather than in ${prefix}/share/hdf5_examples/, which is the HDF5 default. Follow longstanding execv convention for compatibility with NetBSD. Under the examples directories, always find the installed HDF5 executables and scripts using @prefix@ instead of a relative path, because the number of ../ in the relative path will be different on NetBSD than on other systems. Make the HDF5 configure script grok NetBSD. For portability, insulate the HDF5 library from some system macros. Not every system has perl installed in /usr/bin/, so change the shebang (#!) line to `/usr/bin/env perl` to locate perl on the PATH. For portability, use the POSIX sh(1) string-comparison operator `=` instead of `==`.
141 lines
5.2 KiB
Makefile
141 lines
5.2 KiB
Makefile
#
|
|
# Copyright by The HDF Group.
|
|
# Copyright by the Board of Trustees of the University of Illinois.
|
|
# All rights reserved.
|
|
#
|
|
# This file is part of HDF5. The full HDF5 copyright notice, including
|
|
# terms governing use, modification, and redistribution, is contained in
|
|
# the COPYING file, which can be found at the root of the source code
|
|
# distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases.
|
|
# If you do not have access to either file, you may request a copy from
|
|
# help@hdfgroup.org.
|
|
##
|
|
## Makefile.am
|
|
## Run automake to generate a Makefile.in from this file.
|
|
##
|
|
#
|
|
# HDF5 Library Examples Makefile(.in)
|
|
#
|
|
|
|
include $(top_srcdir)/config/commence.am
|
|
|
|
if BUILD_PARALLEL_CONDITIONAL
|
|
EXAMPLE_PROG_PARA = ph5example
|
|
endif
|
|
|
|
INSTALL_SCRIPT_FILES = run-c-ex.sh
|
|
INSTALL_TOP_SCRIPT_FILES = run-all-ex.sh
|
|
INSTALL_TOP_FILES = README
|
|
|
|
# Example programs.
|
|
# Don't tell automake about them, because if it knew they were programs,
|
|
# it would try to compile them instead of using the h5cc script.
|
|
# Use the boilerplate in config/examples.am instead.
|
|
EXAMPLE_PROG = h5_write h5_read h5_extend_write h5_chunk_read h5_compound \
|
|
h5_crtgrpd h5_subset h5_cmprss h5_rdwt h5_crtgrpar h5_extend \
|
|
h5_crtatt h5_crtgrp h5_crtdat \
|
|
h5_group h5_select h5_attribute h5_mount h5_reference_deprec h5_drivers \
|
|
h5_ref_extern h5_ref_compat \
|
|
h5_ref2reg_deprec h5_extlink h5_elink_unix2win h5_shared_mesg h5_vds h5_vds-exc \
|
|
h5_vds-exclim h5_vds-eiger h5_vds-simpleIO h5_vds-percival \
|
|
h5_vds-percival-unlim h5_vds-percival-unlim-maxmin
|
|
TEST_SCRIPT=testh5cc.sh
|
|
TEST_EXAMPLES_SCRIPT=$(INSTALL_SCRIPT_FILES)
|
|
|
|
# Install files
|
|
# List all file that should be installed in examples directory
|
|
INSTALL_FILES = h5_write.c h5_read.c h5_extend_write.c h5_chunk_read.c \
|
|
h5_crtgrpd.c h5_subset.c h5_cmprss.c h5_rdwt.c h5_crtgrpar.c \
|
|
h5_extend.c h5_crtatt.c h5_crtgrp.c h5_crtdat.c \
|
|
h5_compound.c h5_group.c h5_select.c h5_attribute.c h5_mount.c \
|
|
h5_reference_deprec.c h5_drivers.c h5_extlink.c h5_elink_unix2win.c \
|
|
h5_ref_extern.c h5_ref_compat.c \
|
|
h5_ref2reg_deprec.c h5_shared_mesg.c ph5example.c h5_vds.c h5_vds-exc.c \
|
|
h5_vds-exclim.c h5_vds-eiger.c h5_vds-simpleIO.c h5_vds-percival.c \
|
|
h5_vds-percival-unlim.c h5_vds-percival-unlim-maxmin.c
|
|
|
|
|
|
|
|
# How to build examples, using installed version of h5cc
|
|
if BUILD_PARALLEL_CONDITIONAL
|
|
$(EXTRA_PROG): $(H5CC_PP)
|
|
$(H5CC_PP) $(H5CCFLAGS) $(CFLAGS) -o $@ $(srcdir)/$@.c;
|
|
else
|
|
$(EXTRA_PROG): $(H5CC)
|
|
$(H5CC) $(H5CCFLAGS) $(CFLAGS) -o $@ $(srcdir)/$@.c;
|
|
endif
|
|
|
|
# Some examples depend on files created by other examples.
|
|
h5_read.chkexe_: h5_write.chkexe_
|
|
h5_chunk_read.chkexe_: h5_extend_write.chkexe_
|
|
h5_crtgrpd.chkexe_: h5_crtgrpar.chkexe_
|
|
# h5_rdwt and h5_crtatt both modify the same file created by
|
|
# h5_crtdat. Serialize them.
|
|
h5_rdwt.chkexe_: h5_crtdat.chkexe_
|
|
h5_crtatt.chkexe_: h5_rdwt.chkexe_
|
|
|
|
# The external link examples demonstrate how to use paths; they need
|
|
# directories to be created to do this.
|
|
EXTLINK_DIRS=red blue u2w
|
|
|
|
$(EXTLINK_DIRS):
|
|
echo $(mkdir_p) $@
|
|
$(mkdir_p) $@
|
|
|
|
CHECK_CLEANFILES+=$(EXTLINK_DIRS)
|
|
|
|
# Example directory
|
|
# Note: no '/' after DESTDIR. Explanation in commence.am
|
|
EXAMPLEDIR=$(examplesdir)/c
|
|
EXAMPLETOPDIR=$(examplesdir)
|
|
|
|
# List dependencies for each program. Normally, automake would take
|
|
# care of this for us, but if we tell automake about the programs it
|
|
# will try to build them with the normal C compiler, not h5cc. This is
|
|
# an inelegant way of solving the problem.
|
|
# All programs share the same build rule and a dependency on the main hdf5
|
|
# library above.
|
|
h5_chunk_read: $(srcdir)/h5_chunk_read.c
|
|
h5_compound: $(srcdir)/h5_compound.c
|
|
h5_crtgrpd: $(srcdir)/h5_crtgrpd.c
|
|
h5_subset: $(srcdir)/h5_subset.c
|
|
h5_cmprss: $(srcdir)/h5_cmprss.c
|
|
h5_rdwt: $(srcdir)/h5_rdwt.c
|
|
h5_crtgrpar: $(srcdir)/h5_crtgrpar.c
|
|
h5_extend: $(srcdir)/h5_extend.c
|
|
h5_crtatt: $(srcdir)/h5_crtatt.c
|
|
h5_crtgrp: $(srcdir)/h5_crtgrp.c
|
|
h5_crtdat: $(srcdir)/h5_crtdat.c
|
|
h5_extend_write: $(srcdir)/h5_extend_write.c
|
|
h5_group: $(srcdir)/h5_group.c
|
|
h5_write: $(srcdir)/h5_write.c
|
|
h5_read: $(srcdir)/h5_read.c
|
|
h5_select: $(srcdir)/h5_select.c
|
|
h5_attribute: $(srcdir)/h5_attribute.c
|
|
h5_mount: $(srcdir)/h5_mount.c
|
|
h5_ref_compat: $(srcdir)/h5_ref_compat.c
|
|
h5_ref_extern: $(srcdir)/h5_ref_extern.c
|
|
h5_reference_deprec: $(srcdir)/h5_reference_deprec.c
|
|
h5_ref2reg_deprec: $(srcdir)/h5_ref2reg_deprec.c
|
|
h5_drivers: $(srcdir)/h5_drivers.c
|
|
ph5example: $(srcdir)/ph5example.c
|
|
h5_dtransform: $(srcdir)/h5_dtransform.c
|
|
h5_extlink: $(srcdir)/h5_extlink.c $(EXTLINK_DIRS)
|
|
h5_elink_unix2win: $(srcdir)/h5_elink_unix2win.c $(EXTLINK_DIRS)
|
|
h5_shared_mesg: $(srcdir)/h5_shared_mesg.c
|
|
h5_vds: $(srcdir)/h5_vds.c
|
|
h5_vds-exc: $(srcdir)/h5_vds-exc.c
|
|
h5_vds-exclim: $(srcdir)/h5_vds-exclim.c
|
|
h5_vds-eiger: $(srcdir)/h5_vds-eiger.c
|
|
h5_vds-simpleIO: $(srcdir)/h5_vds-simpleIO.c
|
|
h5_vds-percival: $(srcdir)/h5_vds-percival.c
|
|
h5_vds-percival-unlim: $(srcdir)/h5_vds-percival-unlim.c
|
|
h5_vds-percival-unlim-maxmin: $(srcdir)/h5_vds-percival-unlim-maxmin.c
|
|
|
|
if BUILD_SHARED_SZIP_CONDITIONAL
|
|
LD_LIBRARY_PATH=$(LL_PATH)
|
|
endif
|
|
|
|
include $(top_srcdir)/config/examples.am
|
|
include $(top_srcdir)/config/conclude.am
|