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 ]