# QMCkl - Quantum Monte Carlo kernel library # # BSD 3-Clause License # # Copyright (c) 2020, TREX Center of Excellence # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # # 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. # # 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. # # 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@ SUBDIRS = CLEANFILES = qmckl.mod qmckl_verificarlo_f.mod qmckl_constants.mod EXTRA_DIST = pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = pkgconfig/qmckl.pc qmckl_h = include/qmckl.h qmckl_f = include/qmckl_f.F90 qmckl_fo = include/qmckl_f.o include_HEADERS = $(qmckl_h) $(qmckl_f) header_tests = tests/chbrclf.h tests/n2.h QMCKL_TEST_DIR = $(abs_srcdir)/share/qmckl/test_data/ AM_CPPFLAGS = -I$(top_builddir)/src -I$(top_builddir)/include AM_CPPFLAGS += -I$(srcdir)/src -I$(srcdir)/include -I$(QMCKL_TEST_DIR) AM_CPPFLAGS += -DQMCKL_TEST_DIR=\"$(QMCKL_TEST_DIR)\" lib_LTLIBRARIES = src/libqmckl.la src_libqmckl_la_SOURCES = $(qmckl_h) $(qmckl_f) $(C_FILES) $(F_FILES) $(H_PRIVATE_FUNC_FILES) $(H_PRIVATE_TYPE_FILES) src_libqmckl_la_LDFLAGS = $(LDFLAGS) CLEANFILES+=$(qmckl_fo) $(test_qmckl_o) $(FH_TYPE_FILES) $(FH_FUNC_FILES) include generated.mk htmldir = $(docdir)/html textdir = $(docdir)/text htmldir_loc = share/doc/qmckl/html textdir_loc = share/doc/qmckl/text ln_s_verbose = $(ln_s_verbose_@AM_V@) ln_s_verbose_ = $(ln_s_verbose_@AM_DEFAULT_V@) ln_s_verbose_0 = @echo " LN_S $<"; # Include Guix manifest in the source code distribution tarball tools_qmckl_scm = tools/qmckl.scm EXTRA_DIST += $(tools_qmckl_scm) # Documentation rules if HAVE_DOC htmlize_el = $(htmldir_loc)/htmlize.el dist_html_DATA = $(HTML_FILES) \ $(htmldir_loc)/qmckl.css \ $(htmldir_loc)/index.html dist_text_DATA = $(TEXT_FILES) html-local: $(htmlize_el) $(dist_html_DATA) text: $(htmlize_el) $(dist_text_DATA) doc: html text endif setup_py = $(srcdir)/python/setup.py process_header_py = $(srcdir)/python/src/process_header.py test_py = $(srcdir)/python/test/test_api.py qmckl_i = $(srcdir)/python/src/qmckl.i numpy_i = $(srcdir)/python/src/numpy.i qmckl_wrap_c = python/src/qmckl_wrap.c qmckl_include_i = python/src/qmckl_include.i qmckl_py = python/src/qmckl.py if HAVE_PYTHON dist_python_DATA = $(setup_py) $(qmckl_py) $(qmckl_wrap_c) \ $(srcdir)/python/pyproject.toml \ $(srcdir)/python/requirements.txt \ $(srcdir)/python/README.md python-install: $(qmckl_h) $(lib_LTLIBRARIES) $(dist_python_DATA) $(MKDIR_P) python/src cd python ; \ [[ ! -f pyproject.toml ]] && \ cp $(abs_srcdir)/python/{pyproject.toml,requirements.txt,README.md,setup.py} . ; \ cp src/qmckl.py . ; \ export QMCKL_INCLUDEDIR="$(prefix)/include" ; \ export QMCKL_LIBDIR="$(prefix)/lib" ; \ python3 -m pip install . python-test: $(test_py) cd $(abs_srcdir)/python/test/ && \ python test_api.py endif .PHONY: cppcheck python-test python-install source if QMCKL_DEVEL if VFC_CI AM_LDFLAGS=-lvfc_probes -lvfc_probes_f ACLOCAL_AMFLAGS += -I tools endif EXTRA_DIST += $(ORG_FILES) $(TANGLED_FILES) $(EXPORTED_FILES) 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) $(htmlize_el) 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) $(EXPORTED_FILES) $(header_tests) $(htmlize_el) EXTRA_DIST += \ tools/build_doc.sh \ tools/build_makefile.py \ 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 \ tools/theme.setup ## Silent ## ====== export_verbose = $(export_verbose_@AM_V@) export_verbose_ = $(export_verbose_@AM_DEFAULT_V@) export_verbose_0 = @echo " DOC $@"; tangle_verbose = $(tangle_verbose_@AM_V@) tangle_verbose_ = $(tangle_verbose_@AM_DEFAULT_V@) tangle_verbose_0 = @echo " ORG $<"; 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) $(cat_h_verbose)top_builddir=$(abs_top_builddir) srcdir=$(abs_srcdir) qmckl_h=$(qmckl_h) $(srcdir)/tools/build_qmckl_h.sh $(qmckl_f): $(FH_FUNC_FILES) $(FH_TYPE_FILES) echo $(FH_TYPE_FILES) $(FH_FUNC_FILES) $(cat_h_verbose)top_builddir=$(abs_top_builddir) srcdir=$(abs_srcdir) qmckl_f=$(qmckl_f) $(srcdir)/tools/build_qmckl_f.sh $(htmlize_el): $(MKDIR_P) $(htmldir_loc) $(textdir_loc) abs_srcdir=$(abs_srcdir) $(srcdir)/tools/install_htmlize.sh $(htmlize_el) tests/chbrclf.h: $(qmckl_h) tests/n2.h: $(qmckl_h) cppcheck: cppcheck.out cppcheck.out: $(qmckl_h) cd src/ && \ cppcheck --addon=cert -q --error-exitcode=0 \ --enable=all --suppress="unusedStructMember"\ --suppress="unusedFunction" \ --suppress="missingIncludeSystem" \ --suppress="knownConditionTrueFalse" \ --language=c --std=c99 -rp --platform=unix64 \ -I$(srcdir)/include -I$(top_builddir)/include *.c *.h 2>../$@ $(qmckl_include_i): $(qmckl_h) $(process_header_py) $(MKDIR_P) python/src python3 $(process_header_py) $(qmckl_h) mv qmckl_include.i $(qmckl_include_i) $(qmckl_py): $(qmckl_i) $(qmckl_include_i) $(srcdir)/tools/missing swig -Iinclude -Ipython/src -python -py3 -builtin -o $(qmckl_wrap_c) $(qmckl_i) || : $(qmckl_wrap_c): $(qmckl_py) source: $(TANGLED_FILES) $(qmckl_h) $(qmckl_f) CLEANFILES += $(qmckl_wrap_c) \ $(qmckl_include_i) \ $(qmckl_py) endif