1
0
mirror of https://github.com/TREX-CoE/qmckl.git synced 2024-11-19 12:32:40 +01:00
qmckl/Makefile.am

191 lines
5.9 KiB
Makefile
Raw Normal View History

2021-05-10 23:56:26 +02:00
# QMCkl - Quantum Monte Carlo kernel library
#
# BSD 3-Clause License
2021-05-11 11:45:49 +02:00
#
2021-05-10 23:56:26 +02:00
# Copyright (c) 2020, TREX Center of Excellence
# All rights reserved.
2021-05-11 11:45:49 +02:00
#
2021-05-10 23:56:26 +02:00
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
2021-05-11 11:45:49 +02:00
#
2021-05-10 23:56:26 +02:00
# 1. Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
2021-05-11 11:45:49 +02:00
#
2021-05-10 23:56:26 +02:00
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
2021-05-11 11:45:49 +02:00
#
2021-05-10 23:56:26 +02:00
# 3. Neither the name of the copyright holder nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
2021-05-11 11:45:49 +02:00
#
2021-05-10 23:56:26 +02:00
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
ACLOCAL_AMFLAGS = -I m4
VERSION_MAJOR = @VERSION_MAJOR@
VERSION_MINOR = @VERSION_MINOR@
VERSION_PATCH = @VERSION_PATCH@
2021-05-11 11:45:49 +02:00
SUBDIRS =
2021-05-12 01:51:26 +02:00
CLEANFILES = qmckl.mod
2021-05-12 00:22:51 +02:00
EXTRA_DIST =
2021-05-10 23:56:26 +02:00
pkgconfigdir = $(libdir)/pkgconfig
2021-05-12 00:22:51 +02:00
pkgconfig_DATA = pkgconfig/qmckl.pc
2021-05-11 11:45:49 +02:00
qmckl_h = $(srcdir)/include/qmckl.h
include_HEADERS = $(qmckl_h)
2021-05-12 23:18:22 +02:00
qmckl_f = share/qmckl/fortran/qmckl_f.f90
test_qmckl_f = tests/qmckl_f.f90
2021-05-12 02:16:45 +02:00
test_qmckl_fo = tests/qmckl_f.o
2021-05-12 23:18:22 +02:00
src_qmckl_f = src/qmckl_f.f90
src_qmckl_fo = src/qmckl_f.o
header_tests = tests/chbrclf.h tests/n2.h
2021-07-25 15:36:14 +02:00
qmckl_probes_src = src/qmckl_probes.h src/qmckl_probes.c src/qmckl_probes_f.f90
2021-05-11 16:41:03 +02:00
2021-05-11 11:45:49 +02:00
fortrandir = $(datadir)/$(PACKAGE_NAME)/fortran/
2021-05-12 01:51:26 +02:00
dist_fortran_DATA = $(qmckl_f)
2021-05-11 11:45:49 +02:00
2021-05-11 16:41:03 +02:00
AM_CPPFLAGS = -I$(srcdir)/src -I$(srcdir)/include
2021-05-11 12:56:41 +02:00
2021-05-11 16:41:03 +02:00
lib_LTLIBRARIES = src/libqmckl.la
2021-07-25 15:36:14 +02:00
src_libqmckl_la_SOURCES = $(qmckl_h) $(src_qmckl_f) $(C_FILES) $(F_FILES) $(H_PRIVATE_FUNC_FILES) $(H_PRIVATE_TYPE_FILES) $(header_tests) $(qmckl_probes_src)
2021-05-11 12:56:41 +02:00
2021-05-12 02:16:45 +02:00
export qmckl_f qmckl_h srcdir
2021-05-11 11:45:49 +02:00
Integration of Verificarlo CI tests (#1) * comment * Update distance test code The distance test has been updated to the latest version, with a first attempt at using vfc_probes inside it * Functional implementation of vfc_probes in the distance tests This commit has the first functional vfc_ci tests. Verificarlo tests should be written over the existing tests, and they can be enabled with the following configure command: QMCKL_DEVEL=1 ./configure --prefix=$PWD/_install --enable-maintainer-mode --enable-vfc_ci CC="verificarlo-f -Mpreprocess -D VFC_CI" FC="verificarlo-f -Mpreprocess -D VFC_CI" --host=x86_64 The --enable-vfc_ci flag will trigger the linking of the vfc_ci library. Moreover, as of now, the "-Mpreprocess" and "-D VFC_CI" flags have to be specified directly here. There is probably an appropriate macro to place those flags into but I couldn't find it yet, and could only manage to build the tests this way. When the VFC_CI preprocessor is defined, somme additional code to register and export the test probes can be executed (see qmckl_distance.org). As of now, the tests are built as normal, even though they are expected to fail : make all make check From there, the test_qmckl_distance (and potentially the others) executable can be called at will. This will typically be done automatically by vfc_ci, but one could manually execute the executable by defining the following env variables : VFC_PROBES_OUTPUT="test.csv" VFC_BACKENDS="libinterflop_ieee.so" depending on the export file and the Verificarlo backend to be used. The next steps will be to define more tests such as this one, and to integrate them into a Verificarlo CI workflow (by writing a vfc_tests_config.json file and using the automatic CI setup command). * Error in FOrtran interface fixed * Added missing Fortran interfaces * Modify distance test and install process integration All probes are now ignored using only the preprocessor (instead of checking for a facultative argument) in the distance test. Moreover,preprocessing can now be enabled correctly using FCFLAGS (the issue seemed to come from the order of the arguments passed to gfortran/verificarlo-f with the preprocessor arg having to come first). * Add vfc_probes to AO tests vfc_probes have been added to qmckl_ao.org in the same way as qmckl_distance.org, which means that it can be enabled or disabled at compile time using the --enable-vfc_ci option. qmckl_distance.org has been slightly modified with a better indentation, and configure.ac now adds the "-D VFC_CI" flag to CFLAGS when vfc_ci is enabled. Co-authored-by: Anthony Scemama <scemama@irsamc.ups-tlse.fr>
2021-07-07 13:42:42 +02:00
CLEANFILES+=$(test_qmckl_f) $(src_qmckl_f) $(test_qmckl_o) $(src_qmckl_o)
2021-05-12 00:22:51 +02:00
2021-05-12 02:16:45 +02:00
htmlize_el=share/doc/qmckl/html/htmlize.el
2021-05-11 11:45:49 +02:00
2021-05-12 02:16:45 +02:00
include generated.mk
2021-05-11 11:45:49 +02:00
2021-05-12 01:51:26 +02:00
ln_s_verbose = $(ln_s_verbose_@AM_V@)
ln_s_verbose_ = $(ln_s_verbose_@AM_DEFAULT_V@)
ln_s_verbose_0 = @echo " LN_S $<";
2021-05-12 00:22:51 +02:00
htmldir = $(docdir)/html
2021-05-12 02:47:55 +02:00
dist_html_DATA = $(HTML_FILES) \
share/doc/qmckl/html/index.html \
$(srcdir)/share/doc/qmckl/html/qmckl.css
2021-05-12 00:22:51 +02:00
textdir = $(docdir)/text
2021-05-12 01:51:26 +02:00
dist_text_DATA = $(TEXT_FILES)
2021-05-12 00:22:51 +02:00
2021-05-12 01:51:26 +02:00
$(test_qmckl_fo): $(test_qmckl_f)
2021-05-12 02:16:45 +02:00
$(test_qmckl_f): $(srcdir)/$(qmckl_f)
cp $(srcdir)/$(qmckl_f) $(test_qmckl_f)
2021-05-11 11:45:49 +02:00
2021-05-12 01:51:26 +02:00
$(src_qmckl_fo): $(src_qmckl_f)
2021-05-12 02:16:45 +02:00
$(src_qmckl_f): $(srcdir)/$(qmckl_f)
cp $(srcdir)/$(qmckl_f) $(src_qmckl_f)
2021-05-10 23:56:26 +02:00
2021-07-25 15:36:14 +02:00
src/qmckl_probes.c: $(srcdir)/tools/qmckl_probes.c
cp $(srcdir)/tools/qmckl_probes.c $(srcdir)/src/qmckl_probes.c
src/qmckl_probes.h: $(srcdir)/tools/qmckl_probes.h
cp $(srcdir)/tools/qmckl_probes.h $(srcdir)/src/qmckl_probes.h
src/qmckl_probes_f.f90:
cp $(srcdir)/tools/qmckl_probes_f.f90 $(srcdir)/src/qmckl_probes_f.f90
Add the qmckl_probes interface (#2) * comment * Update distance test code The distance test has been updated to the latest version, with a first attempt at using vfc_probes inside it * Functional implementation of vfc_probes in the distance tests This commit has the first functional vfc_ci tests. Verificarlo tests should be written over the existing tests, and they can be enabled with the following configure command: QMCKL_DEVEL=1 ./configure --prefix=$PWD/_install --enable-maintainer-mode --enable-vfc_ci CC="verificarlo-f -Mpreprocess -D VFC_CI" FC="verificarlo-f -Mpreprocess -D VFC_CI" --host=x86_64 The --enable-vfc_ci flag will trigger the linking of the vfc_ci library. Moreover, as of now, the "-Mpreprocess" and "-D VFC_CI" flags have to be specified directly here. There is probably an appropriate macro to place those flags into but I couldn't find it yet, and could only manage to build the tests this way. When the VFC_CI preprocessor is defined, somme additional code to register and export the test probes can be executed (see qmckl_distance.org). As of now, the tests are built as normal, even though they are expected to fail : make all make check From there, the test_qmckl_distance (and potentially the others) executable can be called at will. This will typically be done automatically by vfc_ci, but one could manually execute the executable by defining the following env variables : VFC_PROBES_OUTPUT="test.csv" VFC_BACKENDS="libinterflop_ieee.so" depending on the export file and the Verificarlo backend to be used. The next steps will be to define more tests such as this one, and to integrate them into a Verificarlo CI workflow (by writing a vfc_tests_config.json file and using the automatic CI setup command). * Error in FOrtran interface fixed * Added missing Fortran interfaces * Modify distance test and install process integration All probes are now ignored using only the preprocessor (instead of checking for a facultative argument) in the distance test. Moreover,preprocessing can now be enabled correctly using FCFLAGS (the issue seemed to come from the order of the arguments passed to gfortran/verificarlo-f with the preprocessor arg having to come first). * Add vfc_probes to AO tests vfc_probes have been added to qmckl_ao.org in the same way as qmckl_distance.org, which means that it can be enabled or disabled at compile time using the --enable-vfc_ci option. qmckl_distance.org has been slightly modified with a better indentation, and configure.ac now adds the "-D VFC_CI" flag to CFLAGS when vfc_ci is enabled. * Start work on the vfc tests config file and on a probes wrapper The goal in the next few commits is to make the integration of vfc_probes even easier by using a wrapper to vfc_probe dedicated to qmckl. This will make it easier to create a call to vfc_probe that can be ignored if VFC_CI is not defined in the preprocessor. Once this is done, the integration will be completed by trying to create an actual workflow to automatically build the library and execute CI tests. * Moved qmckl_probes out of src As of now, qmckl_probes have been moved to tools, and can be built via a bash script. This approach seems to make more sense, as this should not be a part of the library itself, but an additional tool to test it. * Functional Makefile setup to enable qmckl_probes The current setup builds qmck_probes by adding it to the main QMckl libray (by adding it to the libtool sources). The Fortran interface's module still need to be compiled separately. TODO : Clean the build setup, improve integration in qmckl_tests and update tests in qmckl_ao with the new syntax. * New probes syntax in AO tests * Clean the probes/Makefile setup The Fortran module is now built a the same time than the main library. The commit also adds a few fixes in the tests and probes wrapper. Co-authored-by: Anthony Scemama <scemama@irsamc.ups-tlse.fr>
2021-07-23 12:01:14 +02:00
2021-05-12 02:16:45 +02:00
share/doc/qmckl/html/index.html: share/doc/qmckl/html/README.html
$(ln_s_verbose)cd share/doc/qmckl/html/ && \
2021-05-13 00:02:13 +02:00
rm -rf index.html && \
$(LN_S) README.html index.html
2021-05-12 00:22:51 +02:00
2021-05-10 23:56:26 +02:00
2021-05-12 02:47:55 +02:00
html: $(dist_html_DATA)
text: $(dist_text_DATA)
2021-05-12 02:16:45 +02:00
doc: html text
2021-05-10 23:56:26 +02:00
2021-05-12 01:51:26 +02:00
if QMCKL_DEVEL
dist_src_DATA = $(ORG_FILES) $(TANGLED_FILES) $(EXPORTED_FILES)
2021-05-19 00:28:56 +02:00
BUILT_SOURCES = $(C_FILES) $(F_FILES) $(FH_FUNC_FILES) $(FH_TYPE_FILES) $(H_FUNC_FILES) $(H_TYPE_FILES) $(H_PRIVATE_FUNC_FILES) $(H_PRIVATE_TYPE_FILES) $(qmckl_f) $(qmckl_h) $(header_tests)
2021-05-12 01:51:26 +02:00
2021-07-25 15:36:14 +02:00
CLEANFILES += $(BUILT_SOURCES) $(C_TEST_FILES) $(F_TEST_FILES) $(TANGLED_FILES) $(C_TEST_FILES) $(F_TEST_FILES) $(qmckl_f) $(qmckl_h) $(HTML_FILES) $(TEXT_FILES) share/doc/qmckl/html/index.html $(EXPORTED_FILES) $(header_tests) qmckl_probes_f.mod
2021-05-12 01:51:26 +02:00
EXTRA_DIST += \
tools/build_doc.sh \
2021-05-12 23:18:22 +02:00
tools/build_makefile.py \
2021-05-12 01:51:26 +02:00
tools/build_qmckl_f.sh \
tools/build_qmckl_h.sh \
tools/config_doc.el \
tools/config_tangle.el \
tools/init.el \
tools/install_htmlize.sh \
tools/lib.org \
tools/tangle.sh \
2021-05-12 02:41:29 +02:00
tools/theme.setup
2021-05-12 01:51:26 +02:00
## Silent
## ======
export_verbose = $(export_verbose_@AM_V@)
export_verbose_ = $(export_verbose_@AM_DEFAULT_V@)
2021-05-12 02:41:29 +02:00
export_verbose_0 = @echo " DOC $@";
2021-05-12 01:51:26 +02:00
tangle_verbose = $(tangle_verbose_@AM_V@)
tangle_verbose_ = $(tangle_verbose_@AM_DEFAULT_V@)
tangle_verbose_0 = @echo " TANGLE $<";
cat_h_verbose = $(cat_h_verbose_@AM_V@)
cat_h_verbose_ = $(cat_h_verbose_@AM_DEFAULT_V@)
cat_h_verbose_0 = @echo " HEADER $@";
## Rules
## =====
SUFFIXES = .f90 .h .org .c _f.f90 _func.h _type.h _private_func.h _private_type.h
$(qmckl_h): $(H_FUNC_FILES) $(H_TYPE_FILES)
2021-07-25 15:36:14 +02:00
$(cat_h_verbose)$(srcdir)/tools/build_qmckl_h.sh
2021-05-12 01:51:26 +02:00
$(qmckl_f): $(FH_FUNC_FILES) $(FH_TYPE_FILES)
$(cat_h_verbose)$(srcdir)/tools/build_qmckl_f.sh
$(htmlize_el):
$(srcdir)/tools/install_htmlize.sh $(htmlize_el)
2021-05-19 01:35:34 +02:00
tests/chbrclf.h: $(qmckl_h)
Integration of Verificarlo CI tests (#1) * comment * Update distance test code The distance test has been updated to the latest version, with a first attempt at using vfc_probes inside it * Functional implementation of vfc_probes in the distance tests This commit has the first functional vfc_ci tests. Verificarlo tests should be written over the existing tests, and they can be enabled with the following configure command: QMCKL_DEVEL=1 ./configure --prefix=$PWD/_install --enable-maintainer-mode --enable-vfc_ci CC="verificarlo-f -Mpreprocess -D VFC_CI" FC="verificarlo-f -Mpreprocess -D VFC_CI" --host=x86_64 The --enable-vfc_ci flag will trigger the linking of the vfc_ci library. Moreover, as of now, the "-Mpreprocess" and "-D VFC_CI" flags have to be specified directly here. There is probably an appropriate macro to place those flags into but I couldn't find it yet, and could only manage to build the tests this way. When the VFC_CI preprocessor is defined, somme additional code to register and export the test probes can be executed (see qmckl_distance.org). As of now, the tests are built as normal, even though they are expected to fail : make all make check From there, the test_qmckl_distance (and potentially the others) executable can be called at will. This will typically be done automatically by vfc_ci, but one could manually execute the executable by defining the following env variables : VFC_PROBES_OUTPUT="test.csv" VFC_BACKENDS="libinterflop_ieee.so" depending on the export file and the Verificarlo backend to be used. The next steps will be to define more tests such as this one, and to integrate them into a Verificarlo CI workflow (by writing a vfc_tests_config.json file and using the automatic CI setup command). * Error in FOrtran interface fixed * Added missing Fortran interfaces * Modify distance test and install process integration All probes are now ignored using only the preprocessor (instead of checking for a facultative argument) in the distance test. Moreover,preprocessing can now be enabled correctly using FCFLAGS (the issue seemed to come from the order of the arguments passed to gfortran/verificarlo-f with the preprocessor arg having to come first). * Add vfc_probes to AO tests vfc_probes have been added to qmckl_ao.org in the same way as qmckl_distance.org, which means that it can be enabled or disabled at compile time using the --enable-vfc_ci option. qmckl_distance.org has been slightly modified with a better indentation, and configure.ac now adds the "-D VFC_CI" flag to CFLAGS when vfc_ci is enabled. Co-authored-by: Anthony Scemama <scemama@irsamc.ups-tlse.fr>
2021-07-07 13:42:42 +02:00
tests/n2.h: $(qmckl_h)
2021-05-19 01:35:34 +02:00
2021-05-12 23:18:22 +02:00
generated.mk: $(ORG_FILES)
2021-06-03 01:32:50 +02:00
$(PYTHON) $(srcdir)/tools/build_makefile.py
2021-05-12 23:18:22 +02:00
2021-05-19 01:49:41 +02:00
cppcheck: cppcheck.out
Integration of Verificarlo CI tests (#1) * comment * Update distance test code The distance test has been updated to the latest version, with a first attempt at using vfc_probes inside it * Functional implementation of vfc_probes in the distance tests This commit has the first functional vfc_ci tests. Verificarlo tests should be written over the existing tests, and they can be enabled with the following configure command: QMCKL_DEVEL=1 ./configure --prefix=$PWD/_install --enable-maintainer-mode --enable-vfc_ci CC="verificarlo-f -Mpreprocess -D VFC_CI" FC="verificarlo-f -Mpreprocess -D VFC_CI" --host=x86_64 The --enable-vfc_ci flag will trigger the linking of the vfc_ci library. Moreover, as of now, the "-Mpreprocess" and "-D VFC_CI" flags have to be specified directly here. There is probably an appropriate macro to place those flags into but I couldn't find it yet, and could only manage to build the tests this way. When the VFC_CI preprocessor is defined, somme additional code to register and export the test probes can be executed (see qmckl_distance.org). As of now, the tests are built as normal, even though they are expected to fail : make all make check From there, the test_qmckl_distance (and potentially the others) executable can be called at will. This will typically be done automatically by vfc_ci, but one could manually execute the executable by defining the following env variables : VFC_PROBES_OUTPUT="test.csv" VFC_BACKENDS="libinterflop_ieee.so" depending on the export file and the Verificarlo backend to be used. The next steps will be to define more tests such as this one, and to integrate them into a Verificarlo CI workflow (by writing a vfc_tests_config.json file and using the automatic CI setup command). * Error in FOrtran interface fixed * Added missing Fortran interfaces * Modify distance test and install process integration All probes are now ignored using only the preprocessor (instead of checking for a facultative argument) in the distance test. Moreover,preprocessing can now be enabled correctly using FCFLAGS (the issue seemed to come from the order of the arguments passed to gfortran/verificarlo-f with the preprocessor arg having to come first). * Add vfc_probes to AO tests vfc_probes have been added to qmckl_ao.org in the same way as qmckl_distance.org, which means that it can be enabled or disabled at compile time using the --enable-vfc_ci option. qmckl_distance.org has been slightly modified with a better indentation, and configure.ac now adds the "-D VFC_CI" flag to CFLAGS when vfc_ci is enabled. Co-authored-by: Anthony Scemama <scemama@irsamc.ups-tlse.fr>
2021-07-07 13:42:42 +02:00
2021-05-19 01:49:41 +02:00
cppcheck.out: $(qmckl_h)
cd src/ && \
cppcheck --addon=cert -q --error-exitcode=0 \
2021-06-03 01:48:26 +02:00
--enable=all --suppress="unusedStructMember"\
--suppress="unusedFunction" \
--suppress="missingIncludeSystem" \
2021-05-19 01:49:41 +02:00
--language=c --std=c99 -rp --platform=unix64 \
-I../include *.c *.h 2>../$@
.PHONY: cppcheck
2021-05-12 01:51:26 +02:00
endif