htrdr

Solving radiative transfer in heterogeneous media
git clone git://git.meso-star.fr/htrdr.git
Log | Files | Refs | README | LICENSE

Makefile.planets (8259B)


      1 # Copyright (C) 2018-2019, 2022-2025 Centre National de la Recherche Scientifique
      2 # Copyright (C) 2020-2022 Institut Mines Télécom Albi-Carmaux
      3 # Copyright (C) 2022-2025 Institut Pierre-Simon Laplace
      4 # Copyright (C) 2022-2025 Institut de Physique du Globe de Paris
      5 # Copyright (C) 2018-2025 |Méso|Star> (contact@meso-star.com)
      6 # Copyright (C) 2022-2025 Observatoire de Paris
      7 # Copyright (C) 2022-2025 Université de Reims Champagne-Ardenne
      8 # Copyright (C) 2022-2025 Université de Versaille Saint-Quentin
      9 # Copyright (C) 2018-2019, 2022-2025 Université Paul Sabatier
     10 #
     11 # This program is free software: you can redistribute it and/or modify
     12 # it under the terms of the GNU General Public License as published by
     13 # the Free Software Foundation, either version 3 of the License, or
     14 # (at your option) any later version.
     15 #
     16 # This program is distributed in the hope that it will be useful,
     17 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
     19 # GNU General Public License for more details.
     20 #
     21 # You should have received a copy of the GNU General Public License
     22 # along with this program. If not, see <http://www.gnu.org/licenses/>.
     23 
     24 .POSIX:
     25 .SUFFIXES: # Clean up default inference rules
     26 
     27 include config.mk
     28 
     29 LIBNAME = libhtrdr-planets.a
     30 
     31 default: command tests
     32 
     33 ################################################################################
     34 # Build the library
     35 ################################################################################
     36 SRC =\
     37  src/planets/htrdr_planets.c\
     38  src/planets/htrdr_planets_args.c\
     39  src/planets/htrdr_planets_compute_radiance.c\
     40  src/planets/htrdr_planets_draw_map.c\
     41  src/planets/htrdr_planets_main.c\
     42  src/planets/htrdr_planets_solve_volrad_budget.c\
     43  src/planets/htrdr_planets_source.c
     44 OBJ = $(SRC:.c=.o)
     45 DEP = $(SRC:.c=.d)
     46 
     47 # Use CFLAGS_EXE because the object files will be linked as executables
     48 CFLAGS_LIB = $(CFLAGS_EXE) $(PLANETS_INCS) -DHTRDR_SHARED_BUILD
     49 
     50 library: core .config_planets htrdr-planets.pc $(DEP)
     51 	@$(MAKE) -fMakefile.planets \
     52 	$$(for i in $(DEP); do echo -f $${i}; done) $(LIBNAME)
     53 
     54 core:
     55 	@$(MAKE) -fMakefile.core
     56 
     57 .config_planets: config.mk
     58 	$(PKG_CONFIG) --atleast-version $(MPI_VERSION) $(MPI_PC)
     59 	$(PKG_CONFIG) --atleast-version $(RNATM_VERSION) rnatm
     60 	$(PKG_CONFIG) --atleast-version $(RNGRD_VERSION) rngrd
     61 	$(PKG_CONFIG) --atleast-version $(RSYS_VERSION) rsys
     62 	$(PKG_CONFIG) --atleast-version $(S3D_VERSION) s3d
     63 	$(PKG_CONFIG) --atleast-version $(SBUF_VERSION) sbuf
     64 	$(PKG_CONFIG) --atleast-version $(SCAM_VERSION) scam
     65 	$(PKG_CONFIG) --atleast-version $(SMSH_VERSION) smsh
     66 	$(PKG_CONFIG) --atleast-version $(SSF_VERSION) ssf
     67 	$(PKG_CONFIG) --atleast-version $(SSP_VERSION) star-sp
     68 	$(PKG_CONFIG) --atleast-version $(SVX_VERSION) svx
     69 	echo 'config done' > $@
     70 
     71 $(LIBNAME): libhtrdr-planets.o
     72 	$(AR) -rc $@ $?
     73 	$(RANLIB) $@
     74 
     75 libhtrdr-planets.o: $(OBJ)
     76 	$(LD) -r $(OBJ) -o $@
     77 	$(OBJCOPY) $(OCPFLAGS) $@
     78 
     79 $(DEP) $(OBJ): config.mk src/planets/htrdr_planets_args.h
     80 
     81 # Inference rules
     82 .SUFFIXES: .c .d .o
     83 .c.d:
     84 	@$(CC) $(CFLAGS_LIB) -MM -MT "$(@:.d=.o) $@" $< -MF $@
     85 
     86 .c.o:
     87 	$(CC) $(CFLAGS_LIB) -c $< -o $@
     88 
     89 ################################################################################
     90 # Build the command
     91 ################################################################################
     92 CMD_SRC = src/commands/htrdr_planets_cmd.c
     93 CMD_OBJ = $(CMD_SRC:.c=.o)
     94 CMD_DEP = $(CMD_SRC:.c=.d)
     95 
     96 CFLAGS_CMD = $(CFLAGS_EXE) $$($(PKG_CONFIG_LOCAL) --static --cflags htrdr-planets)
     97 LDFLAGS_CMD = $(LDFLAGS_EXE) $$($(PKG_CONFIG_LOCAL) --static --libs htrdr-planets)
     98 
     99 command: library $(CMD_DEP)
    100 	@$(MAKE) -fMakefile.planets -f$(CMD_DEP) htrdr-planets
    101 
    102 htrdr-planets: $(CMD_OBJ) $(LIBNAME) $(CORE_NAME)
    103 	$(CC) $(CFLAGS_CMD) -o $@ $(CMD_OBJ) $(LDFLAGS_CMD)
    104 
    105 $(CMD_DEP):
    106 	@$(CC) $(CFLAGS_CMD) -MM -MT "$(@:.d=.o) $@" $(@:.d=.c) -MF $@
    107 
    108 $(CMD_OBJ):
    109 	$(CC) $(CFLAGS_CMD) -c $(@:.o=.c) -o $@
    110 
    111 ################################################################################
    112 # Tests
    113 ################################################################################
    114 TEST_SRC = src/planets/test_htrdr_planets_source.c
    115 TEST_OBJ = $(TEST_SRC:.c=.o)
    116 TEST_DEP = $(TEST_SRC:.c=.d)
    117 
    118 CFLAGS_TEST = $(CFLAGS_EXE) $(PLANETS_INCS)
    119 LDFLAGS_TEST = $(LDFLAGS_EXE) $(PLANETS_LIBS)
    120 
    121 test: tests
    122 	./test_htrdr_planets_source > /dev/null 2>&1
    123 
    124 tests: library $(TEST_DEP)
    125 	@$(MAKE) -fMakefile.planets -f$(TEST_DEP) test_htrdr_planets_source
    126 
    127 # Link with all obj files in the planet library since the test checks
    128 # hidden functions
    129 test_htrdr_planets_source: $(TEST_OBJ) $(CORE_NAME)
    130 	$(CC) $(CFLAGS_TEST) -o $@ $(TEST_OBJ) $(OBJ) $(LDFLAGS_TEST)
    131 
    132 $(TEST_DEP):
    133 	@$(CC) $(CFLAGS_TEST) -MM -MT "$(@:.d=.o) $@" $(@:.d=.c) -MF $@
    134 
    135 $(TEST_OBJ):
    136 	$(CC) $(CFLAGS_TEST) -c $(@:.o=.c) -o $@
    137 
    138 ################################################################################
    139 # Generate files from template
    140 ################################################################################
    141 src/planets/htrdr_planets_args.h: config.mk src/planets/htrdr_planets_args.h.in
    142 	sed -e 's/@HTRDR_PLANETS_ARGS_DEFAULT_OPTICAL_THICKNESS_THRESHOLD@/$(HTRDR_PLANETS_ARGS_DEFAULT_OPTICAL_THICKNESS_THRESHOLD)/g' \
    143 	    -e 's/@HTRDR_PLANETS_ARGS_DEFAULT_GRID_DEFINITION_HINT@/$(HTRDR_PLANETS_ARGS_DEFAULT_GRID_DEFINITION_HINT)/g' \
    144 	    -e 's/@HTRDR_PLANETS_ARGS_DEFAULT_VOLRAD_BUDGET_SPT@/$(HTRDR_PLANETS_ARGS_DEFAULT_VOLRAD_BUDGET_SPT)/g' \
    145 	    $@.in > $@
    146 
    147 htrdr-planets.pc: config.mk htrdr-planets.pc.in
    148 	sed -e 's/@VERSION@/$(VERSION)/g' \
    149 	    -e 's/@RNATM_VERSION@/$(RNATM_VERSION)/g' \
    150 	    -e 's/@RNGRD_VERSION@/$(RNGRD_VERSION)/g' \
    151 	    -e 's/@RSYS_VERSION@/$(RSYS_VERSION)/g' \
    152 	    -e 's/@S3D_VERSION@/$(S3D_VERSION)/g' \
    153 	    -e 's/@SBUF_VERSION@/$(SBUF_VERSION)/g' \
    154 	    -e 's/@SCAM_VERSION@/$(SCAM_VERSION)/g' \
    155 	    -e 's/@SMSH_VERSION@/$(SMSH_VERSION)/g' \
    156 	    -e 's/@SSF_VERSION@/$(SSF_VERSION)/g' \
    157 	    -e 's/@SSP_VERSION@/$(SSP_VERSION)/g' \
    158 	    -e 's/@SVX_VERSION@/$(SVX_VERSION)/g' \
    159 	    $@.in > $@
    160 
    161 doc/htrdr-planets.1: doc/htrdr-planets.1.in
    162 	sed -e 's/@HTRDR_ARGS_CAMERA_PERSPECTIVE_FOV_EXCLUSIVE_MIN@/$(HTRDR_ARGS_CAMERA_PERSPECTIVE_FOV_EXCLUSIVE_MIN)/g' \
    163 	    -e 's/@HTRDR_ARGS_CAMERA_PERSPECTIVE_FOV_EXCLUSIVE_MAX@/$(HTRDR_ARGS_CAMERA_PERSPECTIVE_FOV_EXCLUSIVE_MAX)/g' \
    164 	    -e 's/@HTRDR_ARGS_DEFAULT_CAMERA_PERSPECTIVE_FOCAL_DST@/$(HTRDR_ARGS_DEFAULT_CAMERA_PERSPECTIVE_FOCAL_DST)/g' \
    165 	    -e 's/@HTRDR_ARGS_DEFAULT_CAMERA_PERSPECTIVE_FOV@/$(HTRDR_ARGS_DEFAULT_CAMERA_PERSPECTIVE_FOV)/g' \
    166 	    -e 's/@HTRDR_ARGS_DEFAULT_CAMERA_PERSPECTIVE_LENS_RADIUS@/$(HTRDR_ARGS_DEFAULT_CAMERA_PERSPECTIVE_LENS_RADIUS)/g' \
    167 	    -e 's/@HTRDR_ARGS_DEFAULT_CAMERA_POS@/$(HTRDR_ARGS_DEFAULT_CAMERA_POS)/g' \
    168 	    -e 's/@HTRDR_ARGS_DEFAULT_CAMERA_TGT@/$(HTRDR_ARGS_DEFAULT_CAMERA_TGT)/g' \
    169 	    -e 's/@HTRDR_ARGS_DEFAULT_CAMERA_UP@/$(HTRDR_ARGS_DEFAULT_CAMERA_UP)/g' \
    170 	    -e 's/@HTRDR_ARGS_DEFAULT_IMG_WIDTH@/$(HTRDR_ARGS_DEFAULT_IMG_WIDTH)/g' \
    171 	    -e 's/@HTRDR_ARGS_DEFAULT_IMG_HEIGHT@/$(HTRDR_ARGS_DEFAULT_IMG_HEIGHT)/g' \
    172 	    -e 's/@HTRDR_ARGS_DEFAULT_IMG_SPP@/$(HTRDR_ARGS_DEFAULT_IMG_SPP)/g' \
    173 	    -e 's/@HTRDR_PLANETS_ARGS_DEFAULT_OPTICAL_THICKNESS_THRESHOLD@/$(HTRDR_PLANETS_ARGS_DEFAULT_OPTICAL_THICKNESS_THRESHOLD)/g' \
    174 	    -e 's/@HTRDR_PLANETS_ARGS_DEFAULT_GRID_DEFINITION_HINT@/$(HTRDR_PLANETS_ARGS_DEFAULT_GRID_DEFINITION_HINT)/g' \
    175 	    -e 's/@HTRDR_PLANETS_ARGS_DEFAULT_VOLRAD_BUDGET_SPT@/$(HTRDR_PLANETS_ARGS_DEFAULT_VOLRAD_BUDGET_SPT)/g' \
    176 	    $@.in > $@
    177 
    178 ################################################################################
    179 #  Miscellaneous
    180 ################################################################################
    181 install: command doc/htrdr-planets.1
    182 	@$(SHELL) install.sh 755 "$(DESTDIR)$(BINPREFIX)" htrdr-planets
    183 	@$(SHELL) install.sh 644 "$(DESTDIR)$(MANPREFIX)/man1" doc/htrdr-planets.1
    184 
    185 uninstall:
    186 	rm -f "$(DESTDIR)$(BINPREFIX)/htrdr-planets"
    187 	rm -f "$(DESTDIR)$(MANPREFIX)/man1/htrdr-planets.1"
    188 
    189 clean:
    190 	rm -f $(OBJ) $(DEP) $(LIBNAME)
    191 	rm -f $(CMD_OBJ) $(CMD_DEP) htrdr-planets
    192 	rm -f .config_planets libhtrdr-planets.o htrdr-planets.pc
    193 	rm -f doc/htrdr-planets.1 src/planets/htrdr_planets_args.h
    194 	rm -f test_htrdr_planets_source rnrl.bin
    195 
    196 lint: doc/htrdr-planets.1
    197 	mandoc -Tlint -Wall doc/htrdr-planets.1 || [ $$? -le 1 ]