rngrd

Describe a surface and its physical properties
git clone git://git.meso-star.com/rngrd.git
Log | Files | Refs | README | LICENSE

Makefile (6145B)


      1 # Copyright (C) 2022, 2023, 2025 Centre National de la Recherche Scientifique
      2 # Copyright (C) 2022, 2023, 2025 Institut Pierre-Simon Laplace
      3 # Copyright (C) 2022, 2023, 2025 Institut de Physique du Globe de Paris
      4 # Copyright (C) 2022, 2023, 2025, 2026 |Méso|Star> (contact@meso-star.com)
      5 # Copyright (C) 2022, 2023, 2025 Observatoire de Paris
      6 # Copyright (C) 2022, 2023, 2025 Université de Reims Champagne-Ardenne
      7 # Copyright (C) 2022, 2023, 2025 Université de Versaille Saint-Quentin
      8 # Copyright (C) 2022, 2023, 2025 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 = librngrd.a
     29 LIBNAME_SHARED = librngrd.so
     30 LIBNAME = $(LIBNAME_$(LIB_TYPE))
     31 
     32 default: library utils
     33 all: default
     34 
     35 ################################################################################
     36 # Library building
     37 ################################################################################
     38 SRC = src/rngrd.c src/rngrd_log.c src/rngrd_mesh.c src/rngrd_properties.c
     39 OBJ = $(SRC:.c=.o)
     40 DEP = $(SRC:.c=.d)
     41 
     42 CFLAGS_LIB = $(CFLAGS_SO) $(INCS) -DRNGRD_SHARED_BUILD
     43 LDFLAGS_LIB = $(LDFLAGS_SO) $(LIBS)
     44 
     45 library: .config $(DEP)
     46 	@$(MAKE) -fMakefile $$(for i in $(DEP); do echo -f $${i}; done) \
     47 	$$(if [ -n "$(LIBNAME)" ]; then \
     48 	     echo "$(LIBNAME)"; \
     49 	   else \
     50 	     echo "$(LIBNAME_SHARED)"; \
     51 	   fi)
     52 
     53 $(DEP) $(OBJ): config.mk
     54 
     55 $(LIBNAME_SHARED): $(OBJ)
     56 	$(CC) $(CFLAGS_LIB) -o $@ $(OBJ) $(LDFLAGS_LIB)
     57 
     58 $(LIBNAME_STATIC): librngrd.o
     59 	$(AR) -rc $@ $?
     60 	$(RANLIB) $@
     61 
     62 librngrd.o: $(OBJ)
     63 	$(LD) -r $(OBJ) -o $@
     64 	$(OBJCOPY) $(OCPFLAGS) $@
     65 
     66 .config: config.mk
     67 	$(PKG_CONFIG) --atleast-version $(MRUMTL_VERSION) mrumtl
     68 	$(PKG_CONFIG) --atleast-version $(RNSL_VERSION) rnsl
     69 	$(PKG_CONFIG) --atleast-version $(RSYS_VERSION) rsys
     70 	$(PKG_CONFIG) --atleast-version $(S3D_VERSION) s3d
     71 	$(PKG_CONFIG) --atleast-version $(SBUF_VERSION) sbuf
     72 	$(PKG_CONFIG) --atleast-version $(SMSH_VERSION) smsh
     73 	$(PKG_CONFIG) --atleast-version $(SSF_VERSION) ssf
     74 	echo "config done" > $@
     75 
     76 .SUFFIXES: .c .d .o
     77 .c.d:
     78 	@$(CC) $(CFLAGS_LIB) -MM -MT "$(@:.d=.o) $@" $< -MF $@
     79 
     80 .c.o:
     81 	$(CC) $(CFLAGS_LIB) -c $< -o $@
     82 
     83 ################################################################################
     84 # Utils
     85 ################################################################################
     86 PKG_CONFIG_LOCAL = PKG_CONFIG_PATH="./:$${PKG_CONFIG_PATH}" $(PKG_CONFIG)
     87 
     88 INCS_UTIL = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --cflags rngrd-local rsys)
     89 LIBS_UTIL = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --libs rngrd-local rsys)
     90 
     91 CFLAGS_UTIL = $(CFLAGS_EXE) $(INCS_UTIL)
     92 LDFLAGS_UTIL = $(LDFLAGS_EXE) $(LIBS_UTIL)
     93 
     94 utils: library src/rngrd_lint.d
     95 	@$(MAKE) -fMakefile -f src/rngrd_lint.d rngrd-lint
     96 
     97 src/rngrd_lint.d: config.mk rngrd-local.pc src/rngrd_lint.c
     98 	@$(CC) $(CFLAGS_UTIL) -MM -MT "$(@:.d=.o) $@" $(@:.d=.c) -MF $@
     99 
    100 src/rngrd_lint.o: config.mk rngrd-local.pc src/rngrd_lint.c
    101 	$(CC) $(CFLAGS_UTIL) -c $(@:.o=.c) -o $@
    102 
    103 rngrd-lint: config.mk rngrd-local.pc src/rngrd_lint.o $(LIBNAME)
    104 	$(CC) $(CFLAGS_UTIL) -o $@ src/rngrd_lint.o $(LDFLAGS_UTIL)
    105 
    106 ################################################################################
    107 # Installation
    108 ################################################################################
    109 pkg:
    110 	sed -e 's#@PREFIX@#$(PREFIX)#g'\
    111 	    -e 's#@VERSION@#$(VERSION)#g'\
    112 	    -e 's#@MRUMTL_VERSION@#$(MRUMTL_VERSION)#g'\
    113 	    -e 's#@RNSL_VERSION@#$(RNSL_VERSION)#g'\
    114 	    -e 's#@RSYS_VERSION@#$(RSYS_VERSION)#g'\
    115 	    -e 's#@S3D_VERSION@#$(S3D_VERSION)#g'\
    116 	    -e 's#@SBUF_VERSION@#$(SBUF_VERSION)#g'\
    117 	    -e 's#@SMSH_VERSION@#$(SMSH_VERSION)#g'\
    118 	    -e 's#@SSF_VERSION@#$(SSF_VERSION)#g'\
    119 	    rngrd.pc.in > rngrd.pc
    120 
    121 rngrd-local.pc: rngrd.pc.in
    122 	sed -e '1d'\
    123 	    -e 's#^includedir=.*#includedir=./src/#'\
    124 	    -e 's#^libdir=.*#libdir=./#'\
    125 	    -e 's#@VERSION@#$(VERSION)#g'\
    126 	    -e 's#@MRUMTL_VERSION@#$(MRUMTL_VERSION)#g'\
    127 	    -e 's#@RNSL_VERSION@#$(RNSL_VERSION)#g'\
    128 	    -e 's#@RSYS_VERSION@#$(RSYS_VERSION)#g'\
    129 	    -e 's#@S3D_VERSION@#$(S3D_VERSION)#g'\
    130 	    -e 's#@SBUF_VERSION@#$(SBUF_VERSION)#g'\
    131 	    -e 's#@SMSH_VERSION@#$(SMSH_VERSION)#g'\
    132 	    -e 's#@SSF_VERSION@#$(SSF_VERSION)#g'\
    133 	    rngrd.pc.in > $@
    134 
    135 install: library utils pkg
    136 	install() { mode="$$1"; prefix="$$2"; shift 2; \
    137 	  mkdir -p "$${prefix}"; \
    138 	  cp "$$@" "$${prefix}"; \
    139 	  printf '%s\n' "$${@}" | while read -r i; do \
    140 	    chmod "$${mode}" "$${prefix}/$${i##*/}"; \
    141 	  done; \
    142 	}; \
    143 	if [ "$(LIB_TYPE)" = "STATIC" ]; then mode=644; else mode=755; fi; \
    144 	install "$${mode}" "$(DESTDIR)$(LIBPREFIX)" $(LIBNAME); \
    145 	install 755 "$(DESTDIR)$(BINPREFIX)" rngrd-lint; \
    146 	install 644 "$(DESTDIR)$(LIBPREFIX)/pkgconfig" rngrd.pc; \
    147 	install 644 "$(DESTDIR)$(INCPREFIX)/rad-net" src/rngrd.h; \
    148 	install 644 "$(DESTDIR)$(MANPREFIX)/man1" doc/rngrd-lint.1; \
    149 	install 644 "$(DESTDIR)$(MANPREFIX)/man5" doc/rnsp.5; \
    150 	install 644 "$(DESTDIR)$(PREFIX)/share/doc/rngrd" COPYING README.md
    151 
    152 uninstall:
    153 	rm -f "$(DESTDIR)$(LIBPREFIX)/$(LIBNAME)"
    154 	rm -f "$(DESTDIR)$(BINPREFIX)/rngrd-lint"
    155 	rm -f "$(DESTDIR)$(LIBPREFIX)/pkgconfig/rngrd.pc"
    156 	rm -f "$(DESTDIR)$(INCPREFIX)/rad-net/rngrd.h"
    157 	rm -f "$(DESTDIR)$(MANPREFIX)/man1/rngrd-lint.1"
    158 	rm -f "$(DESTDIR)$(MANPREFIX)/man5/rnsp.5"
    159 	rm -f "$(DESTDIR)$(PREFIX)/share/doc/rngrd/COPYING"
    160 	rm -f "$(DESTDIR)$(PREFIX)/share/doc/rngrd/README.md"
    161 
    162 clean:
    163 	rm -f $(OBJ) $(DEP) $(LIBNAME)
    164 	rm -f rngrd-lint src/rngrd_lint.o src/rngrd_lint.d
    165 	rm -f .config librngrd.o rngrd.pc rngrd-local.pc
    166 
    167 lint:
    168 	mandoc -Tlint -Wwarning doc/rnsp.5
    169 	mandoc -Tlint -Wwarning doc/rngrd-lint.1