city_generator2

Generated conformal 3D meshes representing a city
git clone git://git.meso-star.fr/city_generator2.git
Log | Files | Refs | README | LICENSE

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 ]