rnsf

Define and load a phase function data format
git clone git://git.meso-star.fr/rnsf.git
Log | Files | Refs | README | LICENSE

Makefile (5480B)


      1 # Copyright (C) 2022, 2023 Centre National de la Recherche Scientifique
      2 # Copyright (C) 2022, 2023 Institut Pierre-Simon Laplace
      3 # Copyright (C) 2022, 2023 Institut de Physique du Globe de Paris
      4 # Copyright (C) 2022, 2023 |Méso|Star> (contact@meso-star.com)
      5 # Copyright (C) 2022, 2023 Observatoire de Paris
      6 # Copyright (C) 2022, 2023 Université de Reims Champagne-Ardenne
      7 # Copyright (C) 2022, 2023 Université de Versaille Saint-Quentin
      8 # Copyright (C) 2022, 2023 Université Paul Sabatier
      9 #
     10 # This program is free software: you can redistribute it and/or modify
     11 # it under the terms of the GNU General Public License as published by
     12 # the Free Software Foundation, either version 3 of the License, or
     13 # (at your option) any later version.
     14 #
     15 # This program is distributed in the hope that it will be useful,
     16 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
     18 # GNU General Public License for more details.
     19 #
     20 # You should have received a copy of the GNU General Public License
     21 # along with this program. If not, see <http://www.gnu.org/licenses/>.
     22 
     23 .POSIX:
     24 .SUFFIXES: # Clean up default inference rules
     25 
     26 include config.mk
     27 
     28 LIBNAME_STATIC = librnsf.a
     29 LIBNAME_SHARED = librnsf.so
     30 LIBNAME = $(LIBNAME_$(LIB_TYPE))
     31 
     32 ################################################################################
     33 # Library building
     34 ################################################################################
     35 SRC = src/rnsf.c src/rnsf_fetch_phase_fn.c src/rnsf_log.c
     36 OBJ = $(SRC:.c=.o)
     37 DEP = $(SRC:.c=.d)
     38 
     39 build_library: .config $(DEP)
     40 	@$(MAKE) -fMakefile $$(for i in $(DEP); do echo -f $${i}; done) \
     41 	$$(if [ -n "$(LIBNAME)" ]; then \
     42 	     echo "$(LIBNAME)"; \
     43 	   else \
     44 	     echo "$(LIBNAME_SHARED)"; \
     45 	   fi)
     46 
     47 $(DEP) $(OBJ): config.mk
     48 
     49 $(LIBNAME_SHARED): $(OBJ)
     50 	$(CC) $(CFLAGS_SO) $(RSYS_CFLAGS) -o $@ $(OBJ) $(LDFLAGS_SO) $(RSYS_LIBS) -lm
     51 
     52 $(LIBNAME_STATIC): librnsf.o
     53 	$(AR) -rc $@ $?
     54 	$(RANLIB) $@
     55 
     56 librnsf.o: $(OBJ)
     57 	$(LD) -r $(OBJ) -o $@
     58 	$(OBJCOPY) $(OCPFLAGS) $@
     59 
     60 .config: config.mk
     61 	@if ! $(PKG_CONFIG) --atleast-version $(RSYS_VERSION) rsys; then \
     62 	  echo "rsys $(RSYS_VERSION) not found" >&2; exit 1; fi
     63 	@echo "config done" > $@
     64 
     65 .SUFFIXES: .c .d .o
     66 .c.d:
     67 	@$(CC) $(CFLAGS_SO) $(RSYS_CFLAGS) -MM -MT "$(@:.d=.o) $@" $< -MF $@
     68 
     69 .c.o:
     70 	$(CC) $(CFLAGS_SO) $(RSYS_CFLAGS) -DRNSF_SHARED_BUILD -c $< -o $@
     71 
     72 ################################################################################
     73 # Installation
     74 ################################################################################
     75 pkg:
     76 	sed -e 's#@PREFIX@#$(PREFIX)#g'\
     77 	    -e 's#@VERSION@#$(VERSION)#g'\
     78 	    -e 's#@RSYS_VERSION@#$(RSYS_VERSION)#g'\
     79 	    rnsf.pc.in > rnsf.pc
     80 
     81 rnsf-local.pc: rnsf.pc.in
     82 	sed -e '1d'\
     83 	    -e 's#^includedir=.*#includedir=./src/#'\
     84 	    -e 's#^libdir=.*#libdir=./#'\
     85 	    -e 's#@VERSION@#$(VERSION)#g'\
     86 	    -e 's#@RSYS_VERSION@#$(RSYS_VERSION)#g'\
     87 	    rnsf.pc.in > $@
     88 
     89 install: build_library pkg
     90 	@$(SHELL) make.sh install "$(DESTDIR)$(PREFIX)/lib" $(LIBNAME)
     91 	@$(SHELL) make.sh install "$(DESTDIR)$(PREFIX)/lib/pkgconfig" rnsf.pc
     92 	@$(SHELL) make.sh install "$(DESTDIR)$(PREFIX)/include/rad-net" src/rnsf.h
     93 	@$(SHELL) make.sh install "$(DESTDIR)$(PREFIX)/share/doc/rnsf" COPYING README.md
     94 	@$(SHELL) make.sh install "$(DESTDIR)$(PREFIX)/share/man/man5" rnsf.5
     95 
     96 uninstall:
     97 	rm -f "$(DESTDIR)$(PREFIX)/lib/$(LIBNAME)"
     98 	rm -f "$(DESTDIR)$(PREFIX)/lib/pkgconfig/rnsf.pc"
     99 	rm -f "$(DESTDIR)$(PREFIX)/share/doc/rnsf/COPYING"
    100 	rm -f "$(DESTDIR)$(PREFIX)/share/doc/rnsf/README.md"
    101 	rm -f "$(DESTDIR)$(PREFIX)/include/rad-net/rnsf.h"
    102 	rm -f "$(DESTDIR)$(PREFIX)/share/man/man5/rnsf.5"
    103 
    104 ################################################################################
    105 # Miscellaneous targets
    106 ################################################################################
    107 all: build_library build_tests
    108 
    109 clean: clean_test
    110 	rm -f $(OBJ) $(TEST_OBJ) $(LIBNAME)
    111 	rm -f .config .test librnsf.o rnsf.pc rnsf-local.pc
    112 
    113 distclean: clean
    114 	rm -f $(DEP) $(TEST_DEP)
    115 
    116 lint:
    117 	shellcheck -o all make.sh
    118 	mandoc -Tlint -Wall rnsf.5 || [ $$? -le 1 ]
    119 
    120 ################################################################################
    121 # Tests
    122 ################################################################################
    123 TEST_SRC =\
    124  src/test_rnsf.c\
    125  src/test_rnsf_bands.c\
    126  src/test_rnsf_wlens.c\
    127  src/test_rnsf_load.c
    128 TEST_OBJ = $(TEST_SRC:.c=.o)
    129 TEST_DEP = $(TEST_SRC:.c=.d)
    130 
    131 PKG_CONFIG_LOCAL = PKG_CONFIG_PATH="./:$${PKG_CONFIG_PATH}" $(PKG_CONFIG)
    132 RNSF_CFLAGS = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --cflags rnsf-local.pc)
    133 RNSF_LIBS = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --libs rnsf-local.pc)
    134 
    135 test: build_tests
    136 	@$(SHELL) make.sh check test_rnsf
    137 	@$(SHELL) make.sh check test_rnsf_bands
    138 	@$(SHELL) make.sh check test_rnsf_wlens
    139 
    140 build_tests: build_library $(TEST_DEP) .test
    141 	@$(MAKE) -fMakefile -f.test $$(for i in $(TEST_DEP); do echo -f"$${i}"; done) test_bin
    142 
    143 .test: Makefile make.sh
    144 	@$(SHELL) make.sh config_test $(TEST_SRC) > $@
    145 
    146 clean_test:
    147 	$(SHELL) make.sh clean_test $(TEST_SRC) test_file_bands.rnsf
    148 
    149 $(TEST_DEP): config.mk rnsf-local.pc
    150 	@$(CC) $(CFLAGS_EXE) $(RNSF_CFLAGS) $(RSYS_CFLAGS) \
    151 	-MM -MT "$(@:.d=.o) $@" $(@:.d=.c) -MF $@
    152 
    153 $(TEST_OBJ): config.mk rnsf-local.pc
    154 	$(CC) $(CFLAGS_EXE) $(RNSF_CFLAGS) $(RSYS_CFLAGS) -c $(@:.o=.c) -o $@
    155 
    156 test_rnsf \
    157 test_rnsf_bands \
    158 test_rnsf_wlens \
    159 test_rnsf_load \
    160 : config.mk rnsf-local.pc $(LIBNAME)
    161 	$(CC) $(CFLAGS_EXE) -o $@ src/$@.o $(LDFLAGS_EXE) $(RNSF_LIBS) $(RSYS_LIBS)