From: Teemu Ikonen <tpikonen@gmail.com>
Date: Sat, 13 Oct 2018 18:35:54 +0300
Subject: makefile-fix: Get system HDF5 config from pkg-config.

---
 Makefile | 82 +++++++++++++++++++++++++++++++++-------------------------------
 1 file changed, 42 insertions(+), 40 deletions(-)

diff --git a/Makefile b/Makefile
index 68de62b..6d7769c 100644
--- a/Makefile
+++ b/Makefile
@@ -276,6 +276,7 @@ GRAPHICS = $(ROOT)/html_graphics
 DATADIRI  = $(ROOT)/../CBFlib_$(VERSION)_Data_Files_Input
 DATADIRO  = $(ROOT)/../CBFlib_$(VERSION)_Data_Files_Output
 CBF_PREFIX  ?= $(HOME)
+PKG_CONFIG ?= pkg-config
 
 #
 # Comment out the next line if scratch test files should be retained
@@ -382,9 +383,9 @@ ifneq ($(HDF5_PREFIX),)
 HDF5lib = -L$(HDF5_PREFIX)/lib
 endif
 ifneq ($(MSYS2),yes)
-HDF5LIBS_SYSTEM = $(HDF5lib) -lhdf5 -lz -ldl
+HDF5LIBS_SYSTEM = $(shell $(PKG_CONFIG) --libs hdf5-serial)
 HDF5SOLIBS_LOCAL =
-HDF5SOLIBS_SYSTEM = $(HDF5lib) -lhdf5 -lz
+HDF5SOLIBS_SYSTEM = $(shell $(PKG_CONFIG) --libs hdf5-serial)
 else
 HDF5LIBS_SYSTEM = $(HDF5lib) -lhdf5 -lhdf5.dll -lz -ldl
 HDF5SOLIBS_LOCAL =
@@ -395,6 +396,8 @@ endif
 HDF5REGISTER ?= --register manual
 ifneq ($(HDF5_PREFIX),)
 HDF5include = -I$(HDF5_PREFIX)/include
+else
+HDF5include = $(shell $(PKG_CONFIG) --cflags hdf5-serial)
 endif
 
 ifneq ($(MSYS2),yes)
@@ -658,7 +661,7 @@ endif
 LDFLAGS =
 F90C = gfortran
 F90FLAGS = -g -fno-range-check -fallow-invalid-boz
-F90LDFLAGS = 
+F90LDFLAGS =
 SOCFLAGS = -fPIC
 SOLDFLAGS = -shared -Wl,-rpath,$(CBF_PREFIX)/lib
 JAVAINCLUDES = -I$(JDKDIR)/include -I$(JDKDIR)/include/linux
@@ -830,8 +833,8 @@ F90SOURCE = $(SRC)/fcb_atol_wcnt.f90     \
 	$(SRC)/fcb_read_line.f90     \
 	$(SRC)/fcb_read_xds_i2.f90   \
 	$(SRC)/fcb_skip_whitespace.f90
-	
-	
+
+
 #
 # Header files
 #
@@ -953,7 +956,7 @@ default:
 	@echo ' '
 	@echo ' The current value :'
 	@echo ' '
-	@echo '   $(CBF_PREFIX) '	
+	@echo '   $(CBF_PREFIX) '
 	@echo ' '
 	@echo ' To compile the CBF library and example programs type:'
 	@echo ' '
@@ -976,7 +979,7 @@ default:
 	@echo ' '
 	@echo '   make javatests'
 	@echo ' '
-	@echo ' The tests assume that several data files are in the directories' 
+	@echo ' The tests assume that several data files are in the directories'
 	@echo ' $(DATADIRI) and $(DATADIRO)'
 	@echo ' '
 	@echo ' These directory can be obtained from'
@@ -1118,7 +1121,7 @@ Makefile_LINUX_64: $(M4)/Makefile.m4
 
 Makefile_LINUX_gcc42: $(M4)/Makefile.m4
 	-cp Makefile_LINUX_gcc42 Makefile_LINUX_gcc42_old
-	m4 -P $(PY2CIFRWDEF) $(PY3CIFRWDEF) -Dcbf_system=LINUX_gcc42 $(M4)/Makefile.m4 > Makefile_LINUX_gcc42.tmp 
+	m4 -P $(PY2CIFRWDEF) $(PY3CIFRWDEF) -Dcbf_system=LINUX_gcc42 $(M4)/Makefile.m4 > Makefile_LINUX_gcc42.tmp
 	mv Makefile_LINUX_gcc42.tmp Makefile_LINUX_gcc42
 
 Makefile_LINUX_gcc42_DMALLOC: $(M4)/Makefile.m4
@@ -1161,11 +1164,11 @@ Makefile_IRIX_gcc: $(M4)/Makefile.m4
 	m4 -P $(PY2CIFRWDEF) $(PY3CIFRWDEF) -Dcbf_system=IRIX_gcc $(M4)/Makefile.m4 > Makefile_IRIX_gcc.tmp
 	mv Makefile_IRIX_gcc.tmp Makefile_IRIX_gcc
 
-	
+
 Makefile: $(M4)/Makefile.m4
 	-cp Makefile Makefile_old
 	m4 -P $(PY2CIFRWDEF) $(PY3CIFRWDEF) -Dcbf_system=default $(M4)/Makefile.m4 > Makefile.tmp
-	mv Makefile.tmp Makefile 
+	mv Makefile.tmp Makefile
 
 cbflib.ini: $(M4)/Makefile.m4
 	echo  "$(LDPREFIX)" > cbflib.ini
@@ -1316,7 +1319,7 @@ endif
 	chmod 755 $(CBF_PREFIX)/bin/test_cbf_airy_disk
 	chmod 755 $(CBF_PREFIX)/bin/batch_convert_minicbf.sh
 	chmod 644 $(CBF_PREFIX)/include/cbflib/*.h
-	
+
 ifneq ($(CBFLIB_DONT_USE_PY2CIFRW),yes)
 #
 # Py2CifRW
@@ -1495,7 +1498,7 @@ ifneq ($(CBFLIB_DONT_USE_LZ4),yes)
 #
 # LZ4
 #
-build_lz4:	$(M4)/Makefile.m4 
+build_lz4:	$(M4)/Makefile.m4
 	touch build_lz4
 $(LZ4): $(HDF5)	build_lz4
 	mkdir -p $(SOLIB)
@@ -1513,7 +1516,7 @@ ifneq ($(MSYS2),yes)
 else
 	git clone $(LZ4_URL)
 	(cd $(LZ4); mkdir build; cd build; cmake .. -G 'MSYS Makefiles' -DENABLE_LZ4_PLUGIN="yes"; make all; cp plugins/* $(SOLIB))
-endif 
+endif
 	touch $(LZ4)
 endif
 
@@ -1522,7 +1525,7 @@ ifneq ($(CBFLIB_DONT_USE_BSHUF),yes)
 #
 # BSHUF
 #
-build_BSHUF:	$(M4)/Makefile.m4 
+build_BSHUF:	$(M4)/Makefile.m4
 	touch build_BSHUF
 $(BSHUF): $(HDF5)  build_BSHUF $(LZ4dep)
 	mkdir -p $(SOLIB)
@@ -1566,7 +1569,7 @@ $(CBF_PREFIX)/bin:  $(CBF_PREFIX)
 
 $(CBF_PREFIX)/include:  $(CBF_PREFIX)
 	mkdir -p $(CBF_PREFIX)/include
-	
+
 $(CBF_PREFIX)/include/cbflib: $(CBF_PREFIX)/include
 	mkdir -p $(CBF_PREFIX)/include/cbflib
 
@@ -1658,7 +1661,7 @@ ifneq ($(RANLIB),)
 	$(RANLIB) $@
 endif
 	rm img.o
-	
+
 $(SOLIB)/libimg.so: $(SOURCE) $(HEADERS) $(COMMONDEP)
 	-rm -f $@
 	mkdir -p $(SOLIB)
@@ -1669,7 +1672,7 @@ $(SOLIB)/libimg.so: $(SOURCE) $(HEADERS) $(COMMONDEP)
 #
 # CBF and IMG libraries
 #
-CBF_IMG_LIBS:  $(LIB)/libcbf.a $(LIB)/libimg.a 	
+CBF_IMG_LIBS:  $(LIB)/libcbf.a $(LIB)/libimg.a
 
 
 #
@@ -1724,7 +1727,7 @@ $(PY2CBF)/xmas/xmasheaders.py   \
 $(PY2CBF)/xmas/xmas_cif_template.cif : $(NUWEB_DEP) $(NUWEB_DEP2) $(PY2CBF)/pycbf.w
 	(cd $(PY2CBF); $(NUWEB) pycbf.w )
 	touch $(PY2CBF)/py2setup_py.m4
- 
+
 $(PY2CBF)/_py2cbf.$(PY2CBFEXT):	$(PY2CBF)  shared \
 	$(PY2CBF)/py2setup.py                    \
 	$(PY2CBF)/pycbf.i		         \
@@ -1733,7 +1736,7 @@ $(PY2CBF)/_py2cbf.$(PY2CBFEXT):	$(PY2CBF)  shared \
 	$(PY2CBF)/cbfgenericwrappers.i           \
 	$(PY2CBF)/cbfgoniometerwrappers.i
 	-cp $(SOLIB)/*.so $(LIB)
-	(cd $(PY2CBF); $(PYTHON2) py2setup.py build $(PY2CBFBOPT); cp build/lib*/_py2cbf*.$(PY2CBFEXT) .) 
+	(cd $(PY2CBF); $(PYTHON2) py2setup.py build $(PY2CBFBOPT); cp build/lib*/_py2cbf*.$(PY2CBFEXT) .)
 
 $(PY2CBF)/py2cbfinstall: $(PY2CBF)/pycbf.py
 	(cd $(PY2CBF); $(PYTHON2) $(INSTALLSETUP_PY) install $(PY2CBFIOPT) --prefix=$(CBF_PREFIX))
@@ -1754,7 +1757,7 @@ $(PY2CBF)/py2setup_MINGW.py: $(PY2CBF)/setup_py.m4
 $(LIB)/_py2cbf.$(PY2CBFEXT): $(PY2CBF)/_py2cbf.$(PY2CBFEXT)
 	mkdir -p $(LIB)
 	cp $(PY2CBF)/_py2cbf.$(PY2CBFEXT) $(LIB)/_py2cbf.$(PY2CBFEXT)
-	
+
 $(PY2CBF)/pycbf.pdf: $(NUWEB_DEP) $(NUWEB_DEP2) $(PY2CBF)/pycbf.w
 	(cd $(PY2CBF); \
 	$(NUWEB) pycbf; \
@@ -1762,14 +1765,14 @@ $(PY2CBF)/pycbf.pdf: $(NUWEB_DEP) $(NUWEB_DEP2) $(PY2CBF)/pycbf.w
 	$(NUWEB) pycbf; \
 	latex pycbf; \
 	dvipdfm pycbf )
-	
+
 $(PY2CBF)/CBFlib.txt: $(DOC)/CBFlib.html
 	links -dump $(DOC)/CBFlib.html > $(PY2CBF)/CBFlib.txt
 
 $(PY2CBF)/pycbf.py:	$(PY2CBF)/pycbf.pdf $(PY2CBF)/cbfdetectorwrappers.i \
 			$(PY2CBF)/cbfgenericwrappers.i                   \
 			$(PY2CBF)/cbfgoniometerwrappers.i                \
-			$(PY2CBF)/CBFlib.txt $(PY2CBF)/make_pycbf.py 
+			$(PY2CBF)/CBFlib.txt $(PY2CBF)/make_pycbf.py
 	(cd $(PY2CBF);  $(PYTHON2) make_pycbf.py; $(PYSWIG) -module py2cbf pycbf.i;     \
 		$(PYTHON2) py2setup.py build; mv pycbf.py rawpycbf.py;   \
 		cat rawpycbf.py | sed "s/ _pycbf/ _py2cbf/" > pycbf.py )
@@ -1804,7 +1807,7 @@ $(PY3CBF)/_pycbf.$(PY3CBFEXT):	$(PY3CBF)  shared \
 	$(PY3CBF)/cbfgenericwrappers.i           \
 	$(PY3CBF)/cbfgoniometerwrappers.i
 	-cp $(SOLIB)/*.so $(LIB)
-	(cd $(PY3CBF); $(PYTHON3) py3setup.py build $(PY3CBFBOPT); cp build/lib*/_pycbf*.$(PY3CBFEXT) .) 
+	(cd $(PY3CBF); $(PYTHON3) py3setup.py build $(PY3CBFBOPT); cp build/lib*/_pycbf*.$(PY3CBFEXT) .)
 
 $(PY3CBF)/py3cbfinstall: $(PY3CBF)/pycbf.py
 	(cd $(PY3CBF); $(PYTHON3) $(INSTALLSETUP_PY) install $(PY3CBFIOPT) --prefix=$(CBF_PREFIX))
@@ -1825,7 +1828,7 @@ $(PY3CBF)/py3setup_MINGW.py: $(PY3CBF)/py3setup_py.m4
 $(LIB)/_pycbf.$(PY3CBFEXT): $(PY3CBF)/_pycbf.$(PY3CBFEXT)
 	mkdir -p $(LIB)
 	cp $(PY3CBF)/_pycbf.$(PY3CBFEXT) $(LIB)/_pycbf.$(PY3CBFEXT)
-	
+
 $(PY3CBF)/pycbf.pdf: $(NUWEB_DEP) $(NUWEB_DEP2) $(PY3CBF)/pycbf.w
 	(cd $(PY3CBF); \
 	$(NUWEB) pycbf; \
@@ -1833,14 +1836,14 @@ $(PY3CBF)/pycbf.pdf: $(NUWEB_DEP) $(NUWEB_DEP2) $(PY3CBF)/pycbf.w
 	$(NUWEB) pycbf; \
 	latex pycbf; \
 	dvipdfm pycbf )
-	
+
 $(PY3CBF)/CBFlib.txt: $(DOC)/CBFlib.html
 	links -dump $(DOC)/CBFlib.html > $(PY3CBF)/CBFlib.txt
 
 $(PY3CBF)/pycbf.py:	$(PY3CBF)/pycbf.pdf $(PY3CBF)/cbfdetectorwrappers.i \
 			$(PY3CBF)/cbfgenericwrappers.i                   \
 			$(PY3CBF)/cbfgoniometerwrappers.i                \
-			$(PY3CBF)/CBFlib.txt $(PY3CBF)/make_pycbf.py 
+			$(PY3CBF)/CBFlib.txt $(PY3CBF)/make_pycbf.py
 	(cd $(PY3CBF);  $(PYTHON3) make_pycbf.py; $(PYSWIG) pycbf.i;     \
 		$(PYTHON3) py3setup.py build; mv pycbf.py rawpycbf.py;   \
 		echo "# coding=utf-8" | cat - rawpycbf.py > pycbf.py)
@@ -1970,7 +1973,7 @@ $(BIN)/cif2cbf: $(LIB)/libcbf.a $(EXAMPLES)/cif2cbf.c $(LIB)/libimg.a \
 # cbf2nexus example program
 #
 $(BIN)/cbf2nexus: $(LIB)/libcbf.a $(EXAMPLES)/cbf2nexus.c \
-	$(GOPTLIB) $(GOPTINC) 
+	$(GOPTLIB) $(GOPTINC)
 	mkdir -p $(BIN)
 	$(CC) $(CFLAGS) $(LDFLAGS) $(MISCFLAG) $(CBF_REGEXFLAG) $(INCLUDES) $(WARNINGS) \
 	$(EXAMPLES)/cbf2nexus.c $(GOPTLIB) -L$(LIB) \
@@ -1981,12 +1984,12 @@ $(BIN)/cbf2nexus: $(LIB)/libcbf.a $(EXAMPLES)/cbf2nexus.c \
 # minicbf2nexus example program
 #
 $(BIN)/minicbf2nexus: $(LIB)/libcbf.a $(EXAMPLES)/minicbf2nexus.c $(LIB)/libimg.a \
-	$(GOPTLIB) $(GOPTINC) 
+	$(GOPTLIB) $(GOPTINC)
 	mkdir -p $(BIN)
 	$(CC) $(CFLAGS) $(LDFLAGS) $(MISCFLAG) $(CBF_REGEXFLAG) $(INCLUDES) $(WARNINGS) \
 	$(EXAMPLES)/minicbf2nexus.c $(GOPTLIB) -L$(LIB) \
 	-lcbf $(REGEX_LIBS_STATIC) $(HDF5LIBS_LOCAL) $(EXTRALIBS) $(HDF5LIBS_SYSTEM) -lhdf5 -limg -o $@
-	
+
 #
 # nexus2cbf example program
 #
@@ -2134,7 +2137,7 @@ $(BIN)/ctestcbf: $(EXAMPLES)/testcbf.c $(LIB)/libcbf.a
 $(BIN)/testcbf.class: $(EXAMPLES)/testcbf.java $(JCBF)/cbflib-$(VERSION).jar $(SOLIB)/libcbf_wrap.so
 	mkdir -p $(BIN)
 	$(JAVAC) -cp $(JCBF)/cbflib-$(VERSION).jar -d $(BIN) $(EXAMPLES)/testcbf.java
-	
+
 ifneq ($(CBF_USE_ULP),)
 #
 # testulp test program
@@ -2167,7 +2170,7 @@ $(BIN)/testalloc: $(LIB)/libcbf.a $(EXAMPLES)/testalloc.c $(EXAMPLES)/unittest.h
 	  $(WARNINGS) $(EXAMPLES)/testalloc.c -L$(LIB) $(LIB)/libcbf.a \
 	  $(REGEX_LIBS_STATIC) $(EXTRALIBS) -o $@.tmp
 	mv $@.tmp $@
-	
+
 #
 # test_cbf_airy_disk test program
 #
@@ -2204,7 +2207,7 @@ $(DATADIRO):	$(M4)/Makefile.m4
 	touch $(DATADIRO)
 	-(cd ..; rm CBFlib_$(VERSION)_Data_Files_Output.tar.gz)
 
-# Input Data Files 
+# Input Data Files
 
 TESTINPUT_BASIC =  example.mar2300
 DATADIRI_INPUT_BASIC = $(DATADIRI)/example.mar2300
@@ -2324,7 +2327,7 @@ DATADIRO_OUTPUT_SIGNATURES =  $(DATADIRO)/adscconverted_flat_orig.cbf$(SEXT) \
 	$(DATADIRO)/minicbf_orig.h5$(SEXT)
 
 
-	
+
 # Output Data File Signatures
 
 TESTOUTPUTSIGS = adscconverted_flat_orig.cbf$(SEXT) \
@@ -2372,7 +2375,7 @@ DATADIRS_OUTPUT_SIGNATURES =  $(DATADIRS)/adscconverted_flat_orig.cbf$(SEXT) \
 	$(DATADIRS)/fel_test2_orig.out$(SEXT) \
 	$(DATADIRS)/fel_test3_orig.out$(SEXT)
 
-# Fetch Input Data Files 
+# Fetch Input Data Files
 
 $(TESTINPUT_BASIC):	$(DATADIRI) $(DATADIRI_INPUT_BASIC)
 	cp $(DATADIRI)/$@  $@
@@ -2448,7 +2451,7 @@ restore_output:		$(NEWTESTOUTPUT) $(DATADIRO) $(MINICBF_TEST)/minicbf.h5
 	cp $(PY2CBF)/fel_test3.out $(DATADIRO)/fel_test3_orig.out
 
 restore_signatures:	restore_output
-	
+
 #
 # Basic Tests
 #
@@ -2653,7 +2656,7 @@ endif
 	-cat XRD1621_I4encbC100_orig.cbf | sed "2,2s/0.9.6/0.9.7/" | diff -a - XRD1621_I4encbC100.cbf
 	#-$(DIFF) XRD1621_I4encbC100.cbf XRD1621_I4encbC100_orig.cbf
 
-	
+
 py2cbftests:  $(PY2CBF)/_py2cbf.$(PY2CBFEXT) $(BIN)/cbf_standardize_numbers $(TESTOUTPUT)
 	($(RTLPEXPORTS) cd $(PY2CBF); $(PYTHON2) $(PY2CBF)/pycbf_test1.py | $(BIN)/cbf_standardize_numbers - 4 > pycbf_test1.out)
 	-(cd $(PY2CBF); $(DIFF) pycbf_test1.out $(ROOT)/pycbf_test1_orig.out)
@@ -2841,12 +2844,12 @@ empty:
 	@-rm -f $(PY2CBF)/pycbf_test3.out
 	@-rm -f $(PY2CBF)/pycbf_test4.out
 	./.undosymlinks
-	
+
 #
 # Remove temporary files
 #
-clean:	
-	@-rm -f core 
+clean:
+	@-rm -f core
 	@-rm -f *.o
 	@-rm -f *.u
 #
@@ -2869,4 +2872,3 @@ tar:   $(DOCUMENTS) $(SOURCE) $(SRC)/cbf.stx $(HEADERS) $(M4FILES)\
 	README.html README Makefile \
 	$(JPEGS)
 	gzip --best CBFlib.tar
-
