stardis

Perform coupled heat transfer calculations
git clone git://git.meso-star.fr/stardis.git
Log | Files | Refs | README | LICENSE

Makefile (8993B)


      1 # Copyright (C) 2018-2025 |Méso|Star> (contact@meso-star.com)
      2 #
      3 # This program is free software: you can redistribute it and/or modify
      4 # it under the terms of the GNU General Public License as published by
      5 # the Free Software Foundation, either version 3 of the License, or
      6 # (at your option) any later version.
      7 #
      8 # This program is distributed in the hope that it will be useful,
      9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
     11 # GNU General Public License for more details.
     12 #
     13 # You should have received a copy of the GNU General Public License
     14 # along with this program. If not, see <http://www.gnu.org/licenses/>.
     15 
     16 .POSIX:
     17 .SUFFIXES: # Clean up default inference rules
     18 
     19 include config.mk
     20 
     21 MPI_DEF = -DSTARDIS_ENABLE_MPI
     22 
     23 # Default target
     24 all: build_executable man
     25 
     26 ################################################################################
     27 # Program building
     28 ################################################################################
     29 SRC =\
     30  src/stardis-app.c\
     31  src/stardis-args.c\
     32  src/stardis-compute.c\
     33  src/stardis-compute-probe-boundary.c\
     34  src/stardis-description.c\
     35  src/stardis-extern-source.c\
     36  src/stardis-fluid.c\
     37  src/stardis-fluid-prog.c\
     38  src/stardis-fbound.c\
     39  src/stardis-fbound-prog.c\
     40  src/stardis-hbound.c\
     41  src/stardis-hbound-prog.c\
     42  src/stardis-hfbound.c\
     43  src/stardis-hfbound-prog.c\
     44  src/stardis-intface.c\
     45  src/stardis-main.c\
     46  src/stardis-output.c\
     47  src/stardis-parsing.c\
     48  src/stardis-program.c\
     49  src/stardis-radiative-env.c\
     50  src/stardis-sfconnect.c\
     51  src/stardis-sfconnect-prog.c\
     52  src/stardis-ssconnect.c\
     53  src/stardis-ssconnect-prog.c\
     54  src/stardis-solid.c\
     55  src/stardis-solid-prog.c\
     56  src/stardis-tbound.c\
     57  src/stardis-tbound-prog.c
     58 
     59 # Headers to configure
     60 HDR=\
     61  src/stardis-args.h\
     62  src/stardis-default.h\
     63  src/stardis-green-types.h\
     64  src/stardis-prog-properties.h\
     65  src/stardis-version.h
     66 
     67 OBJ = $(SRC:.c=.o)
     68 DEP = $(SRC:.c=.d)
     69 
     70 build_executable: .config $(HDR) $(DEP)
     71 	@$(MAKE) -fMakefile $$(for i in $(DEP); do echo -f "$${i}"; done) stardis
     72 
     73 stardis $(DEP) $(OBJ): config.mk
     74 
     75 stardis: $(OBJ)
     76 	$(CC) $(CFLAGS) $(INCS) -o $@ $(OBJ) $(LDFLAGS) $(LIBS)
     77 
     78 .config: config.mk
     79 	if [ "$(DISTRIB_PARALLELISM)" = "MPI" ]; then \
     80 	  $(PKG_CONFIG) --atleast-version $(MPI_VERSION) $(MPI_PC); \
     81 	fi
     82 	$(PKG_CONFIG) --atleast-version $(RSYS_VERSION) rsys
     83 	$(PKG_CONFIG) --atleast-version $(S3D_VERSION) s3d
     84 	$(PKG_CONFIG) --atleast-version $(SDIS_VERSION) sdis
     85 	$(PKG_CONFIG) --atleast-version $(SENC3D_VERSION) senc3d
     86 	$(PKG_CONFIG) --atleast-version $(SG3D_VERSION) sg3d
     87 	$(PKG_CONFIG) --atleast-version $(SSP_VERSION) star-sp
     88 	$(PKG_CONFIG) --atleast-version $(SSTL_VERSION) sstl
     89 	@echo "config done" > $@
     90 
     91 src/stardis-default.h: config.mk src/stardis-default.h.in
     92 	sed -e 's/@STARDIS_ARGS_DEFAULT_TRAD@/$(STARDIS_ARGS_DEFAULT_TRAD)/' \
     93 	    -e 's/@STARDIS_ARGS_DEFAULT_TRAD_REFERENCE@/$(STARDIS_ARGS_DEFAULT_TRAD_REFERENCE)/' \
     94 	    -e 's/@STARDIS_ARGS_DEFAULT_COMPUTE_TIME@/$(STARDIS_ARGS_DEFAULT_COMPUTE_TIME)/' \
     95 	    -e 's/@STARDIS_ARGS_DEFAULT_PICARD_ORDER@/$(STARDIS_ARGS_DEFAULT_PICARD_ORDER)/' \
     96 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_FOV@/$(STARDIS_ARGS_DEFAULT_RENDERING_FOV)/' \
     97 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_IMG_HEIGHT@/$(STARDIS_ARGS_DEFAULT_RENDERING_IMG_HEIGHT)/' \
     98 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_IMG_WIDTH@/$(STARDIS_ARGS_DEFAULT_RENDERING_IMG_WIDTH)/' \
     99 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_OUTPUT_FILE_FMT@/$(STARDIS_ARGS_DEFAULT_RENDERING_OUTPUT_FILE_FMT)/' \
    100 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_POS@/$(STARDIS_ARGS_DEFAULT_RENDERING_POS)/' \
    101 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_SPP@/$(STARDIS_ARGS_DEFAULT_RENDERING_SPP)/' \
    102 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_TGT@/$(STARDIS_ARGS_DEFAULT_RENDERING_TGT)/' \
    103 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_TIME@/$(STARDIS_ARGS_DEFAULT_RENDERING_TIME)/' \
    104 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_UP@/$(STARDIS_ARGS_DEFAULT_RENDERING_UP)/' \
    105 	    -e 's/@STARDIS_ARGS_DEFAULT_SAMPLES_COUNT@/$(STARDIS_ARGS_DEFAULT_SAMPLES_COUNT)/' \
    106 	    -e 's/@STARDIS_ARGS_DEFAULT_SCALE_FACTOR@/$(STARDIS_ARGS_DEFAULT_SCALE_FACTOR)/' \
    107 	    -e 's/@STARDIS_ARGS_DEFAULT_VERBOSE_LEVEL@/$(STARDIS_ARGS_DEFAULT_VERBOSE_LEVEL)/' \
    108 	    $@.in > $@
    109 
    110 src/stardis-args.h: config.mk src/stardis-args.h.in
    111 	sed -e 's/@STARDIS_MAX_NAME_LENGTH@/$(STARDIS_MAX_NAME_LENGTH)/' \
    112 	    $@.in > $@
    113 
    114 src/stardis-version.h: config.mk src/stardis-version.h.in
    115 	sed -e 's/@STARDIS_APP_VERSION_MAJOR@/$(VERSION_MAJOR)/' \
    116 	    -e 's/@STARDIS_APP_VERSION_MINOR@/$(VERSION_MINOR)/' \
    117 	    -e 's/@STARDIS_APP_VERSION_PATCH@/$(VERSION_PATCH)/' \
    118 	    $@.in > $@
    119 
    120 src/stardis-green-types.h: config.mk src/stardis-green-types.h.in
    121 	sed -e 's/@STARDIS_GREEN_TYPES_VERSION@/$(GREEN_TYPES_VERSION)/' \
    122 	    -e "s/@STARDIS_MAX_NAME_LENGTH@/$$(($(STARDIS_MAX_NAME_LENGTH)-1))/" \
    123 	    $@.in > $@
    124 
    125 src/stardis-prog-properties.h: config.mk src/stardis-prog-properties.h.in
    126 	sed -e 's/@STARDIS_PROG_PROPERTIES_VERSION@/$(PROG_PROPERTIES_VERSION)/' \
    127 	    $@.in > $@
    128 
    129 .SUFFIXES: .c .d .o
    130 .c.d:
    131 	@$(CC) $(CFLAGS) $(INCS) $($(DISTRIB_PARALLELISM)_DEF) -MM -MT \
    132 	"$(@:.d=.o) $@" $< -MF $@
    133 
    134 .c.o:
    135 	$(CC) $(CFLAGS) $(INCS) $($(DISTRIB_PARALLELISM)_DEF) -c $< -o $@
    136 
    137 ################################################################################
    138 # Man pages
    139 ################################################################################
    140 man: doc/stardis.1 doc/stardis-input.5
    141 
    142 doc/stardis.1: doc/stardis.1.in
    143 	sed -e 's/@STARDIS_ARGS_DEFAULT_COMPUTE_TIME@/$(STARDIS_ARGS_DEFAULT_COMPUTE_TIME)/' \
    144 	    -e 's/@STARDIS_ARGS_DEFAULT_PICARD_ORDER@/$(STARDIS_ARGS_DEFAULT_PICARD_ORDER)/' \
    145 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_FOV@/$(STARDIS_ARGS_DEFAULT_RENDERING_FOV)/' \
    146 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_IMG_HEIGHT@/$(STARDIS_ARGS_DEFAULT_RENDERING_IMG_HEIGHT)/' \
    147 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_IMG_WIDTH@/$(STARDIS_ARGS_DEFAULT_RENDERING_IMG_WIDTH)/' \
    148 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_OUTPUT_FILE_FMT@/$(STARDIS_ARGS_DEFAULT_RENDERING_OUTPUT_FILE_FMT)/' \
    149 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_POS@/$(STARDIS_ARGS_DEFAULT_RENDERING_POS)/' \
    150 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_SPP@/$(STARDIS_ARGS_DEFAULT_RENDERING_SPP)/' \
    151 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_TGT@/$(STARDIS_ARGS_DEFAULT_RENDERING_TGT)/' \
    152 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_TIME@/$(STARDIS_ARGS_DEFAULT_RENDERING_TIME)/' \
    153 	    -e 's/@STARDIS_ARGS_DEFAULT_RENDERING_UP@/$(STARDIS_ARGS_DEFAULT_RENDERING_UP)/' \
    154 	    -e 's/@STARDIS_ARGS_DEFAULT_SAMPLES_COUNT@/$(STARDIS_ARGS_DEFAULT_SAMPLES_COUNT)/' \
    155 	    -e 's/@STARDIS_ARGS_DEFAULT_SCALE_FACTOR@/$(STARDIS_ARGS_DEFAULT_SCALE_FACTOR)/' \
    156 	    -e 's/@STARDIS_ARGS_DEFAULT_VERBOSE_LEVEL@/$(STARDIS_ARGS_DEFAULT_VERBOSE_LEVEL)/' \
    157 	    $@.in > $@
    158 
    159 doc/stardis-input.5: doc/stardis-input.5.in
    160 	sed -e "s/@STARDIS_MAX_NAME_LENGTH@/$$(($(STARDIS_MAX_NAME_LENGTH)-1))/" \
    161 	    $@.in > $@
    162 
    163 ################################################################################
    164 # Installation
    165 ################################################################################
    166 pkg:
    167 	sed -e 's#@PREFIX@#$(PREFIX)#g'\
    168 	    -e 's#@VERSION@#$(VERSION)#g'\
    169 	    stardis.pc.in > stardis.pc
    170 
    171 install: all pkg
    172 	install() { mode="$$1"; prefix="$$2"; shift 2; \
    173 	  mkdir -p "$${prefix}"; \
    174 	  cp "$$@" "$${prefix}"; \
    175 	  for i in "$$@"; do \
    176 	    chmod "$${mode}" "$${prefix}/$$(basename "$${i}")";\
    177 	  done; \
    178 	}; \
    179 	install 755 "$(DESTDIR)$(BINPREFIX)" stardis; \
    180 	install 644 "$(DESTDIR)$(INCPREFIX)/stardis" src/stardis-green-types.h; \
    181 	install 644 "$(DESTDIR)$(INCPREFIX)/stardis" src/stardis-prog-properties.h; \
    182 	install 644 "$(DESTDIR)$(LIBPREFIX)/pkgconfig" stardis.pc; \
    183 	install 644 "$(DESTDIR)$(PREFIX)/share/doc/stardis" COPYING README.md; \
    184 	install 644 "$(DESTDIR)$(MANPREFIX)/man1" doc/stardis.1; \
    185 	install 644 "$(DESTDIR)$(MANPREFIX)/man5" doc/stardis-input.5; \
    186 	install 644 "$(DESTDIR)$(MANPREFIX)/man5" doc/stardis-output.5
    187 
    188 uninstall:
    189 	rm -f "$(DESTDIR)$(BINPREFIX)/stardis"
    190 	rm -f "$(DESTDIR)$(INCPREFIX)/stardis/stardis-green-types.h"
    191 	rm -f "$(DESTDIR)$(INCPREFIX)/stardis/stardis-prog-properties.h"
    192 	rm -f "$(DESTDIR)$(LIBPREFIX)/pkgconfig/stardis.pc"
    193 	rm -f "$(DESTDIR)$(PREFIX)/share/doc/stardis/COPYING"
    194 	rm -f "$(DESTDIR)$(PREFIX)/share/doc/stardis/README.md"
    195 	rm -f "$(DESTDIR)$(MANPREFIX)/man1/stardis.1"
    196 	rm -f "$(DESTDIR)$(MANPREFIX)/man5/stardis-input.5"
    197 	rm -f "$(DESTDIR)$(MANPREFIX)/man5/stardis-output.5"
    198 
    199 ################################################################################
    200 # Miscellaneous targets
    201 ################################################################################
    202 clean:
    203 	rm -f $(HDR) $(OBJ) .config stardis stardis.pc
    204 	rm -f $(DEP)
    205 	rm -f doc/stardis.1 doc/stardis-input.5
    206 
    207 lint: man
    208 	shellcheck -o all make.sh
    209 	mandoc -Tlint -Wall doc/stardis.1 || [ $$? -le 1 ]
    210 	mandoc -Tlint -Wall doc/stardis-input.5 || [ $$? -le 1 ]
    211 	mandoc -Tlint -Wall doc/stardis-output.5 || [ $$? -le 1 ]