Makefile (6062B)
1 # Copyright (C) 2018-2023 |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 # Default target 22 all: build_executable man 23 24 ################################################################################ 25 # Program building 26 ################################################################################ 27 SRC =\ 28 src/cg_args.c\ 29 src/cg_building.c\ 30 src/cg_catalog.c\ 31 src/cg_catalog_parsing.c\ 32 src/cg_city.c\ 33 src/cg_city_parsing.c\ 34 src/cg_construction_mode_0.c\ 35 src/cg_construction_mode_1.c\ 36 src/cg_construction_mode_2.c\ 37 src/cg_construction_mode.c\ 38 src/cg_ground.c\ 39 src/cg_main.c\ 40 src/cg_types.c\ 41 src/cg_vertex_denoiser.c 42 43 # Headers to configure 44 HDR=\ 45 src/cg_default.h\ 46 src/cg_version.h 47 48 OBJ = $(SRC:.c=.o) 49 DEP = $(SRC:.c=.d) 50 51 build_executable: .config $(HDR) $(DEP) 52 @$(MAKE) -fMakefile $$(for i in $(DEP); do echo -f $${i}; done) city_generator2 53 54 $(DEP) $(OBJ): config.mk 55 56 city_generator2: $(OBJ) 57 $(CC) $(CFLAGS) $(DPDC_CFLAGS) -o $@ $(OBJ) $(LDFLAGS) $(DPDC_LIBS) 58 59 .config: config.mk 60 @if ! $(PKG_CONFIG) --atleast-version $(RSYS_VERSION) rsys; then \ 61 echo "rsys $(RSYS_VERSION) not found" >&2; exit 1; fi 62 @if ! $(PKG_CONFIG) --atleast-version $(SCAD_VERSION) scad; then \ 63 echo "scad $(SCAD_VERSION) not found" >&2; exit 1; fi 64 @if ! $(PKG_CONFIG) --atleast-version $(SCPR_VERSION) scpr; then \ 65 echo "scpr $(SCPR_VERSION) not found" >&2; exit 1; fi 66 @if ! $(PKG_CONFIG) --atleast-version $(LIBCYAML_VERSION) libcyaml; then \ 67 echo "libcyaml $(LIBCYAML_VERSION) not found" >&2; exit 1; fi 68 @echo "config done" > $@ 69 70 src/cg_default.h: config.mk src/cg_default.h.in 71 sed -e 's/@CG2_ARGS_DEFAULT_VERBOSITY_LEVEL@/$(CG2_ARGS_DEFAULT_VERBOSITY_LEVEL)/' \ 72 -e 's/@CG2_ARGS_BINARY_STL_DEFAULT@/$(CG2_ARGS_BINARY_STL_DEFAULT)/' \ 73 -e 's/@CG2_ARGS_STL_DEFAULT_STR@/$(CG2_ARGS_STL_DEFAULT_STR)/' \ 74 -e 's/@CG2_ARGS_STL_NON_DEFAULT_STR@/$(CG2_ARGS_STL_NON_DEFAULT_STR)/' \ 75 -e 's/@CG2_ARGS_CHANGE_BINARY_DEFAULT_OPTION@/$(CG2_ARGS_CHANGE_BINARY_DEFAULT_OPTION)/' \ 76 -e 's/@CG2_CLOSE_NEIGHBOR_DISTANCE@/$(CG2_CLOSE_NEIGHBOR_DISTANCE)/' \ 77 -e 's/@CG2_MIN_DISTANCE_TO_MAP_LIMITS@/$(CG2_MIN_DISTANCE_TO_MAP_LIMITS)/' \ 78 -e 's/@CG2_MIN_WINDOWS_WIDTH@/$(CG2_MIN_WINDOWS_WIDTH)/' \ 79 -e 's/@CG2_GLAZING_THICKNESS@/$(CG2_GLAZING_THICKNESS)/' \ 80 -e 's/@CG2_ARGS_DEFAULT_STARDIS_FILES_BASENAME@/$(CG2_ARGS_DEFAULT_STARDIS_FILES_BASENAME)/' \ 81 $@.in > $@ 82 83 src/cg_version.h: config.mk src/cg_version.h.in 84 sed -e 's/@CG2_VERSION_MAJOR@/$(VERSION_MAJOR)/' \ 85 -e 's/@CG2_VERSION_MINOR@/$(VERSION_MINOR)/' \ 86 -e 's/@CG2_VERSION_PATCH@/$(VERSION_PATCH)/' \ 87 $@.in > $@ 88 89 .SUFFIXES: .c .d .o 90 .c.d: 91 @$(CC) $(CFLAGS) $(DPDC_CFLAGS) -MM -MT \ 92 "$(@:.d=.o) $@" $< -MF $@ 93 94 .c.o: 95 $(CC) $(CFLAGS) $(DPDC_CFLAGS) -c $< -o $@ 96 97 ################################################################################ 98 # Man pages 99 ################################################################################ 100 man: doc/city_generator2.1 101 102 doc/city_generator2.1: doc/city_generator2.1.in 103 sed -e 's/@CG2_ARGS_DEFAULT_VERBOSITY_LEVEL@/$(CG2_ARGS_DEFAULT_VERBOSITY_LEVEL)/' \ 104 -e 's/@CG2_ARGS_CHANGE_BINARY_DEFAULT_OPTION@/$(CG2_ARGS_CHANGE_BINARY_DEFAULT_OPTION)/' \ 105 -e 's/@CG2_ARGS_STL_NON_DEFAULT_STR@/$(CG2_ARGS_STL_NON_DEFAULT_STR)/' \ 106 -e 's/@CG2_ARGS_STL_DEFAULT_STR@/$(CG2_ARGS_STL_DEFAULT_STR)/' \ 107 -e 's/@CG2_ARGS_DEFAULT_STARDIS_FILES_BASENAME@/$(CG2_ARGS_DEFAULT_STARDIS_FILES_BASENAME)/' \ 108 $@.in > $@ 109 110 ################################################################################ 111 # Installation 112 ################################################################################ 113 pkg: 114 sed -e 's#@PREFIX@#$(PREFIX)#g'\ 115 -e 's#@VERSION@#$(VERSION)#g'\ 116 city_generator2.pc.in > city_generator2.pc 117 118 install: all pkg 119 @$(SHELL) make.sh install "$(DESTDIR)$(PREFIX)/bin" city_generator2 120 @$(SHELL) make.sh install "$(DESTDIR)$(PREFIX)/lib/pkgconfig" city_generator2.pc 121 @$(SHELL) make.sh install "$(DESTDIR)$(PREFIX)/share/doc/city_generator2" COPYING README.md 122 @$(SHELL) make.sh install "$(DESTDIR)$(PREFIX)/share/man/man1" doc/city_generator2.1 123 @$(SHELL) make.sh install "$(DESTDIR)$(PREFIX)/share/man/man5" doc/city_generator2-input.5 124 @$(SHELL) make.sh install "$(DESTDIR)$(PREFIX)/share/man/man5" doc/city_generator2-output.5 125 126 uninstall: 127 rm -f "$(DESTDIR)$(PREFIX)/bin/city_generator2" 128 rm -f "$(DESTDIR)$(PREFIX)/lib/pkgconfig/city_generator2.pc" 129 rm -f "$(DESTDIR)$(PREFIX)/share/doc/city_generator2/COPYING" 130 rm -f "$(DESTDIR)$(PREFIX)/share/doc/city_generator2/README.md" 131 rm -f "$(DESTDIR)$(PREFIX)/share/man/man1/city_generator2.1" 132 rm -f "$(DESTDIR)$(PREFIX)/share/man/man5/city_generator2-input.5" 133 rm -f "$(DESTDIR)$(PREFIX)/share/man/man5/city_generator2-output.5" 134 135 ################################################################################ 136 # Miscellaneous targets 137 ################################################################################ 138 clean: 139 rm -f $(HDR) $(OBJ) .config city_generator2 city_generator2.pc 140 rm -f doc/city_generator2.1 141 142 distclean: clean 143 rm -f $(DEP) 144 145 lint: man 146 shellcheck -o all make.sh 147 mandoc -Tlint -Wall doc/city_generator2.1 || [ $$? -le 1 ] 148 mandoc -Tlint -Wall doc/city_generator2-input.5 || [ $$? -le 1 ] 149 mandoc -Tlint -Wall doc/city_generator2-output.5 || [ $$? -le 1 ]