Makefile - libgrapheme - unicode string library
 (HTM) git clone git://git.suckless.org/libgrapheme
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       Makefile (17792B)
       ---
            1 # See LICENSE file for copyright and license details
            2 # libgrapheme - unicode string library
            3 .POSIX:
            4 .SUFFIXES:
            5 
            6 VERSION_MAJOR = 2
            7 VERSION_MINOR = 0
            8 VERSION_PATCH = 1
            9 UNICODE_VERSION = 17.0.0
           10 MAN_DATE = 2022-10-06
           11 
           12 include config.mk
           13 
           14 VERSION = $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)
           15 
           16 BENCHMARK =\
           17         benchmark/bidirectional\
           18         benchmark/case\
           19         benchmark/character\
           20         benchmark/sentence\
           21         benchmark/line\
           22         benchmark/utf8-decode\
           23         benchmark/word\
           24 
           25 DATA =\
           26         data/BidiBrackets.txt\
           27         data/BidiCharacterTest.txt\
           28         data/BidiMirroring.txt\
           29         data/BidiTest.txt\
           30         data/DerivedBidiClass.txt\
           31         data/DerivedCoreProperties.txt\
           32         data/EastAsianWidth.txt\
           33         data/emoji-data.txt\
           34         data/GraphemeBreakProperty.txt\
           35         data/GraphemeBreakTest.txt\
           36         data/LICENSE\
           37         data/LineBreak.txt\
           38         data/LineBreakTest.txt\
           39         data/SentenceBreakProperty.txt\
           40         data/SentenceBreakTest.txt\
           41         data/SpecialCasing.txt\
           42         data/UnicodeData.txt\
           43         data/WordBreakProperty.txt\
           44         data/WordBreakTest.txt\
           45 
           46 GEN =\
           47         gen/bidirectional\
           48         gen/bidirectional-test\
           49         gen/case\
           50         gen/character\
           51         gen/character-test\
           52         gen/line\
           53         gen/line-test\
           54         gen/sentence\
           55         gen/sentence-test\
           56         gen/word\
           57         gen/word-test\
           58 
           59 GEN2 =\
           60         gen2/character\
           61 
           62 SRC =\
           63         src/bidirectional\
           64         src/case\
           65         src/character\
           66         src/line\
           67         src/sentence\
           68         src/utf8\
           69         src/util\
           70         src/word\
           71 
           72 TEST =\
           73         test/bidirectional\
           74         test/case\
           75         test/character\
           76         test/line\
           77         test/sentence\
           78         test/utf8-decode\
           79         test/utf8-encode\
           80         test/word\
           81 
           82 MAN_TEMPLATE =\
           83         man/template/is_case.sh\
           84         man/template/next_break.sh\
           85         man/template/to_case.sh\
           86 
           87 MAN3 =\
           88         man/grapheme_decode_utf8\
           89         man/grapheme_encode_utf8\
           90         man/grapheme_is_character_break\
           91         man/grapheme_is_uppercase\
           92         man/grapheme_is_uppercase_utf8\
           93         man/grapheme_is_lowercase\
           94         man/grapheme_is_lowercase_utf8\
           95         man/grapheme_is_titlecase\
           96         man/grapheme_is_titlecase_utf8\
           97         man/grapheme_next_character_break\
           98         man/grapheme_next_line_break\
           99         man/grapheme_next_sentence_break\
          100         man/grapheme_next_word_break\
          101         man/grapheme_next_character_break_utf8\
          102         man/grapheme_next_line_break_utf8\
          103         man/grapheme_next_sentence_break_utf8\
          104         man/grapheme_next_word_break_utf8\
          105         man/grapheme_to_uppercase\
          106         man/grapheme_to_uppercase_utf8\
          107         man/grapheme_to_lowercase\
          108         man/grapheme_to_lowercase_utf8\
          109         man/grapheme_to_titlecase\
          110         man/grapheme_to_titlecase_utf8\
          111 
          112 MAN7 =\
          113         man/libgrapheme\
          114 
          115 all: data/LICENSE $(MAN3:=.3) $(MAN7:=.7) $(ANAME) $(SONAME)
          116 
          117 data/BidiBrackets.txt:
          118         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/BidiBrackets.txt
          119 
          120 data/BidiCharacterTest.txt:
          121         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/BidiCharacterTest.txt
          122 
          123 data/BidiMirroring.txt:
          124         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/BidiMirroring.txt
          125 
          126 data/BidiTest.txt:
          127         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/BidiTest.txt
          128 
          129 data/DerivedBidiClass.txt:
          130         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/extracted/DerivedBidiClass.txt
          131 
          132 data/DerivedCoreProperties.txt:
          133         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/DerivedCoreProperties.txt
          134 
          135 data/EastAsianWidth.txt:
          136         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/EastAsianWidth.txt
          137 
          138 data/emoji-data.txt:
          139         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/emoji/emoji-data.txt
          140 
          141 data/GraphemeBreakProperty.txt:
          142         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/auxiliary/GraphemeBreakProperty.txt
          143 
          144 data/GraphemeBreakTest.txt:
          145         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/auxiliary/GraphemeBreakTest.txt
          146 
          147 data/LICENSE:
          148         wget -O $@ https://www.unicode.org/license.txt
          149 
          150 data/LineBreak.txt:
          151         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/LineBreak.txt
          152 
          153 data/LineBreakTest.txt:
          154         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/auxiliary/LineBreakTest.txt
          155 
          156 data/SentenceBreakProperty.txt:
          157         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/auxiliary/SentenceBreakProperty.txt
          158 
          159 data/SentenceBreakTest.txt:
          160         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/auxiliary/SentenceBreakTest.txt
          161 
          162 data/SpecialCasing.txt:
          163         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/SpecialCasing.txt
          164 
          165 data/UnicodeData.txt:
          166         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/UnicodeData.txt
          167 
          168 data/WordBreakProperty.txt:
          169         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/auxiliary/WordBreakProperty.txt
          170 
          171 data/WordBreakTest.txt:
          172         wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/auxiliary/WordBreakTest.txt
          173 
          174 benchmark/bidirectional.o: benchmark/bidirectional.c Makefile config.mk gen/bidirectional-test.h grapheme.h benchmark/util.h
          175 benchmark/case.o: benchmark/case.c Makefile config.mk gen/word-test.h grapheme.h benchmark/util.h
          176 benchmark/character.o: benchmark/character.c Makefile config.mk gen/character-test.h grapheme.h benchmark/util.h
          177 benchmark/line.o: benchmark/line.c Makefile config.mk gen/line-test.h grapheme.h benchmark/util.h
          178 benchmark/utf8-decode.o: benchmark/utf8-decode.c Makefile config.mk gen/character-test.h grapheme.h benchmark/util.h
          179 benchmark/sentence.o: benchmark/sentence.c Makefile config.mk gen/sentence-test.h grapheme.h benchmark/util.h
          180 benchmark/util.o: benchmark/util.c Makefile config.mk benchmark/util.h
          181 benchmark/word.o: benchmark/word.c Makefile config.mk gen/word-test.h grapheme.h benchmark/util.h
          182 gen/bidirectional.o: gen/bidirectional.c Makefile config.mk gen/util.h
          183 gen/bidirectional-test.o: gen/bidirectional-test.c Makefile config.mk gen/util.h
          184 gen/case.o: gen/case.c Makefile config.mk gen/util.h
          185 gen/character.o: gen/character.c Makefile config.mk gen/util.h
          186 gen/character-test.o: gen/character-test.c Makefile config.mk gen/util.h
          187 gen/line.o: gen/line.c Makefile config.mk gen/util.h
          188 gen/line-test.o: gen/line-test.c Makefile config.mk gen/util.h
          189 gen/sentence.o: gen/sentence.c Makefile config.mk gen/util.h
          190 gen/sentence-test.o: gen/sentence-test.c Makefile config.mk gen/util.h
          191 gen/word.o: gen/word.c Makefile config.mk gen/util.h
          192 gen/word-test.o: gen/word-test.c Makefile config.mk gen/util.h
          193 gen/util.o: gen/util.c Makefile config.mk gen/util.h
          194 gen2/character.o: gen2/character.c Makefile config.mk gen2/util.h
          195 gen2/util.o: gen2/util.c Makefile config.mk gen2/util.h
          196 src/bidirectional.o: src/bidirectional.c Makefile config.mk gen/bidirectional.h grapheme.h src/util.h
          197 src/case.o: src/case.c Makefile config.mk gen/case.h grapheme.h src/util.h
          198 src/character.o: src/character.c Makefile config.mk gen/character.h grapheme.h src/util.h
          199 src/line.o: src/line.c Makefile config.mk gen/line.h grapheme.h src/util.h
          200 src/sentence.o: src/sentence.c Makefile config.mk gen/sentence.h grapheme.h src/util.h
          201 src/utf8.o: src/utf8.c Makefile config.mk grapheme.h
          202 src/util.o: src/util.c Makefile config.mk gen/types.h grapheme.h src/util.h
          203 src/word.o: src/word.c Makefile config.mk gen/word.h grapheme.h src/util.h
          204 test/bidirectional.o: test/bidirectional.c Makefile config.mk gen/bidirectional.h gen/bidirectional-test.h grapheme.h test/util.h
          205 test/case.o: test/case.c Makefile config.mk grapheme.h test/util.h
          206 test/character.o: test/character.c Makefile config.mk gen/character-test.h grapheme.h test/util.h
          207 test/line.o: test/line.c Makefile config.mk gen/line-test.h grapheme.h test/util.h
          208 test/sentence.o: test/sentence.c Makefile config.mk gen/sentence-test.h grapheme.h test/util.h
          209 test/utf8-encode.o: test/utf8-encode.c Makefile config.mk grapheme.h test/util.h
          210 test/utf8-decode.o: test/utf8-decode.c Makefile config.mk grapheme.h test/util.h
          211 test/util.o: test/util.c Makefile config.mk test/util.h
          212 test/word.o: test/word.c Makefile config.mk gen/word-test.h grapheme.h test/util.h
          213 
          214 benchmark/bidirectional$(BINSUFFIX): benchmark/bidirectional.o benchmark/util.o $(ANAME)
          215 benchmark/case$(BINSUFFIX): benchmark/case.o benchmark/util.o $(ANAME)
          216 benchmark/character$(BINSUFFIX): benchmark/character.o benchmark/util.o $(ANAME)
          217 benchmark/line$(BINSUFFIX): benchmark/line.o benchmark/util.o $(ANAME)
          218 benchmark/sentence$(BINSUFFIX): benchmark/sentence.o benchmark/util.o $(ANAME)
          219 benchmark/utf8-decode$(BINSUFFIX): benchmark/utf8-decode.o benchmark/util.o $(ANAME)
          220 benchmark/word$(BINSUFFIX): benchmark/word.o benchmark/util.o $(ANAME)
          221 gen/bidirectional$(BINSUFFIX): gen/bidirectional.o gen/util.o
          222 gen/bidirectional-test$(BINSUFFIX): gen/bidirectional-test.o gen/util.o
          223 gen/case$(BINSUFFIX): gen/case.o gen/util.o
          224 gen/character$(BINSUFFIX): gen/character.o gen/util.o
          225 gen/character-test$(BINSUFFIX): gen/character-test.o gen/util.o
          226 gen/line$(BINSUFFIX): gen/line.o gen/util.o
          227 gen/line-test$(BINSUFFIX): gen/line-test.o gen/util.o
          228 gen/sentence$(BINSUFFIX): gen/sentence.o gen/util.o
          229 gen/sentence-test$(BINSUFFIX): gen/sentence-test.o gen/util.o
          230 gen/word$(BINSUFFIX): gen/word.o gen/util.o
          231 gen/word-test$(BINSUFFIX): gen/word-test.o gen/util.o
          232 gen2/character$(BINSUFFIX): gen2/character.o gen2/util.o
          233 test/bidirectional$(BINSUFFIX): test/bidirectional.o test/util.o $(ANAME)
          234 test/case$(BINSUFFIX): test/case.o test/util.o $(ANAME)
          235 test/character$(BINSUFFIX): test/character.o test/util.o $(ANAME)
          236 test/line$(BINSUFFIX): test/line.o test/util.o $(ANAME)
          237 test/sentence$(BINSUFFIX): test/sentence.o test/util.o $(ANAME)
          238 test/utf8-encode$(BINSUFFIX): test/utf8-encode.o test/util.o $(ANAME)
          239 test/utf8-decode$(BINSUFFIX): test/utf8-decode.o test/util.o $(ANAME)
          240 test/word$(BINSUFFIX): test/word.o test/util.o $(ANAME)
          241 
          242 gen/bidirectional.h: data/BidiBrackets.txt data/BidiMirroring.txt data/DerivedBidiClass.txt data/UnicodeData.txt gen/bidirectional$(BINSUFFIX)
          243 gen/bidirectional-test.h: data/BidiCharacterTest.txt data/BidiTest.txt gen/bidirectional-test$(BINSUFFIX)
          244 gen/case.h: data/DerivedCoreProperties.txt data/UnicodeData.txt data/SpecialCasing.txt gen/case$(BINSUFFIX)
          245 gen/character.h: data/DerivedCoreProperties.txt data/emoji-data.txt data/GraphemeBreakProperty.txt gen/character$(BINSUFFIX)
          246 gen/character-test.h: data/GraphemeBreakTest.txt gen/character-test$(BINSUFFIX)
          247 gen/line.h: data/emoji-data.txt data/EastAsianWidth.txt data/LineBreak.txt gen/line$(BINSUFFIX)
          248 gen/line-test.h: data/LineBreakTest.txt gen/line-test$(BINSUFFIX)
          249 gen/sentence.h: data/SentenceBreakProperty.txt gen/sentence$(BINSUFFIX)
          250 gen/sentence-test.h: data/SentenceBreakTest.txt gen/sentence-test$(BINSUFFIX)
          251 gen/word.h: data/WordBreakProperty.txt gen/word$(BINSUFFIX)
          252 gen/word-test.h: data/WordBreakTest.txt gen/word-test$(BINSUFFIX)
          253 gen2/character.gen.h: data/DerivedCoreProperties.txt data/emoji-data.txt data/GraphemeBreakProperty.txt gen2/character$(BINSUFFIX)
          254 
          255 man/grapheme_is_character_break.3: man/grapheme_is_character_break.sh Makefile config.mk
          256 man/grapheme_is_uppercase.3: man/grapheme_is_uppercase.sh man/template/is_case.sh Makefile config.mk
          257 man/grapheme_is_uppercase_utf8.3: man/grapheme_is_uppercase_utf8.sh man/template/is_case.sh Makefile config.mk
          258 man/grapheme_is_lowercase.3: man/grapheme_is_lowercase.sh man/template/is_case.sh Makefile config.mk
          259 man/grapheme_is_lowercase_utf8.3: man/grapheme_is_lowercase_utf8.sh man/template/is_case.sh Makefile config.mk
          260 man/grapheme_is_titlecase.3: man/grapheme_is_titlecase.sh man/template/is_case.sh Makefile config.mk
          261 man/grapheme_is_titlecase_utf8.3: man/grapheme_is_titlecase_utf8.sh man/template/is_case.sh Makefile config.mk
          262 man/grapheme_next_character_break.3: man/grapheme_next_character_break.sh man/template/next_break.sh Makefile config.mk
          263 man/grapheme_next_line_break.3: man/grapheme_next_line_break.sh man/template/next_break.sh Makefile config.mk
          264 man/grapheme_next_sentence_break.3: man/grapheme_next_sentence_break.sh man/template/next_break.sh Makefile config.mk
          265 man/grapheme_next_word_break.3: man/grapheme_next_word_break.sh man/template/next_break.sh Makefile config.mk
          266 man/grapheme_next_character_break_utf8.3: man/grapheme_next_character_break_utf8.sh man/template/next_break.sh Makefile config.mk
          267 man/grapheme_next_line_break_utf8.3: man/grapheme_next_line_break_utf8.sh man/template/next_break.sh Makefile config.mk
          268 man/grapheme_next_sentence_break_utf8.3: man/grapheme_next_sentence_break_utf8.sh man/template/next_break.sh Makefile config.mk
          269 man/grapheme_next_word_break_utf8.3: man/grapheme_next_word_break_utf8.sh man/template/next_break.sh Makefile config.mk
          270 man/grapheme_to_uppercase.3: man/grapheme_to_uppercase.sh man/template/to_case.sh Makefile config.mk
          271 man/grapheme_to_lowercase.3: man/grapheme_to_lowercase.sh man/template/to_case.sh Makefile config.mk
          272 man/grapheme_to_titlecase.3: man/grapheme_to_titlecase.sh man/template/to_case.sh Makefile config.mk
          273 man/grapheme_to_uppercase_utf8.3: man/grapheme_to_uppercase_utf8.sh man/template/to_case.sh Makefile config.mk
          274 man/grapheme_to_lowercase_utf8.3: man/grapheme_to_lowercase_utf8.sh man/template/to_case.sh Makefile config.mk
          275 man/grapheme_to_titlecase_utf8.3: man/grapheme_to_titlecase_utf8.sh man/template/to_case.sh Makefile config.mk
          276 man/grapheme_decode_utf8.3: man/grapheme_decode_utf8.sh Makefile config.mk
          277 man/grapheme_encode_utf8.3: man/grapheme_encode_utf8.sh Makefile config.mk
          278 
          279 man/libgrapheme.7: man/libgrapheme.sh Makefile config.mk
          280 
          281 $(GEN:=.o) gen/util.o:
          282         $(BUILD_CC) -c -o $@ $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) $(@:.o=.c)
          283 
          284 $(GEN2:=.o) gen2/util.o:
          285         $(BUILD_CC) -c -o $@ $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) $(@:.o=.c)
          286 
          287 $(BENCHMARK:=.o) benchmark/util.o $(TEST:=.o) test/util.o:
          288         $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(@:.o=.c)
          289 
          290 $(SRC:=.o):
          291         $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(SHFLAGS) $(@:.o=.c)
          292 
          293 $(BENCHMARK:=$(BINSUFFIX)):
          294         $(CC) -o $@ $(LDFLAGS) $(@:$(BINSUFFIX)=.o) benchmark/util.o $(ANAME) -lutf8proc
          295 
          296 $(GEN:=$(BINSUFFIX)):
          297         $(BUILD_CC) -o $@ $(BUILD_LDFLAGS) $(@:$(BINSUFFIX)=.o) gen/util.o
          298 
          299 $(GEN2:=$(BINSUFFIX)):
          300         $(BUILD_CC) -o $@ $(BUILD_LDFLAGS) $(@:$(BINSUFFIX)=.o) gen2/util.o
          301 
          302 $(TEST:=$(BINSUFFIX)):
          303         $(CC) -o $@ $(LDFLAGS) $(@:$(BINSUFFIX)=.o) test/util.o $(ANAME)
          304 
          305 $(GEN:=.h):
          306         $(@:.h=$(BINSUFFIX)) > $@
          307 
          308 $(GEN2:=.gen.h):
          309         $(@:.gen.h=$(BINSUFFIX)) > $@
          310 
          311 $(ANAME): $(SRC:=.o)
          312         $(AR) -rc $@ $?
          313         $(RANLIB) $@
          314 
          315 $(SONAME): $(SRC:=.o)
          316         $(CC) -o $@ $(SOFLAGS) $(LDFLAGS) $(SRC:=.o)
          317 
          318 $(MAN3:=.3):
          319         SH="$(SH)" MAN_DATE="$(MAN_DATE)" UNICODE_VERSION="$(UNICODE_VERSION)" $(SH) $(@:.3=.sh) > $@
          320 
          321 $(MAN7:=.7):
          322         SH="$(SH)" MAN_DATE="$(MAN_DATE)" UNICODE_VERSION="$(UNICODE_VERSION)" $(SH) $(@:.7=.sh) > $@
          323 
          324 benchmark: $(BENCHMARK:=$(BINSUFFIX))
          325         for m in $(BENCHMARK:=$(BINSUFFIX)); do ./$$m; done
          326 
          327 check: test
          328 
          329 test: $(TEST:=$(BINSUFFIX))
          330         for m in $(TEST:=$(BINSUFFIX)); do ./$$m; done
          331 
          332 install: all
          333         mkdir -p "$(DESTDIR)$(LIBPREFIX)"
          334         mkdir -p "$(DESTDIR)$(INCPREFIX)"
          335         mkdir -p "$(DESTDIR)$(MANPREFIX)/man3"
          336         mkdir -p "$(DESTDIR)$(MANPREFIX)/man7"
          337         cp -f $(MAN3:=.3) "$(DESTDIR)$(MANPREFIX)/man3"
          338         cp -f $(MAN7:=.7) "$(DESTDIR)$(MANPREFIX)/man7"
          339         cp -f $(ANAME) "$(DESTDIR)$(LIBPREFIX)"
          340         cp -f $(SONAME) "$(DESTDIR)$(LIBPREFIX)/$(SONAME)"
          341         if [ "$(SOSYMLINK)" = "true" ]; then i=0; while [ "$$i" -le $(VERSION_MINOR) ]; do ln -sf "$(SONAME)" "$(DESTDIR)$(LIBPREFIX)/libgrapheme.so.$(VERSION_MAJOR).$$i"; i=$$((i+1)); done; fi
          342         if [ "$(SOSYMLINK)" = "true" ]; then ln -sf "$(SONAME)" "$(DESTDIR)$(LIBPREFIX)/libgrapheme.so.$(VERSION_MAJOR)"; fi
          343         if [ "$(SOSYMLINK)" = "true" ]; then ln -sf "$(SONAME)" "$(DESTDIR)$(LIBPREFIX)/libgrapheme.so"; fi
          344         cp -f grapheme.h "$(DESTDIR)$(INCPREFIX)"
          345         if ! [ -z "$(LDCONFIG)" ]; then $(SHELL) -c "$(LDCONFIG)"; fi
          346         if ! [ -z "$(PCPREFIX)" ]; then mkdir -p "$(DESTDIR)$(PCPREFIX)"; printf "Name: libgrapheme\nDescription: Unicode string library\nURL: https://libs.suckless.org/libgrapheme/\nVersion: $(VERSION)\nCflags: -I$(INCPREFIX)\nLibs: -L$(LIBPREFIX) -lgrapheme\n" > "$(DESTDIR)$(PCPREFIX)/libgrapheme.pc"; fi
          347 
          348 uninstall:
          349         for m in $(MAN3:=.3); do rm -f "$(DESTDIR)$(MANPREFIX)/man3/`basename $$m`"; done
          350         for m in $(MAN7:=.7); do rm -f "$(DESTDIR)$(MANPREFIX)/man7/`basename $$m`"; done
          351         rm -f "$(DESTDIR)$(LIBPREFIX)/$(ANAME)"
          352         rm -f "$(DESTDIR)$(LIBPREFIX)/$(SONAME)"
          353         if [ "$(SOSYMLINK)" = "true" ]; then i=0; while [ "$$i" -le $(VERSION_MINOR) ]; do rm -f "$(DESTDIR)$(LIBPREFIX)/libgrapheme.so.$(VERSION_MAJOR).$$i"; i=$$((i+1)); done; fi
          354         if [ "$(SOSYMLINK)" = "true" ]; then rm -f "$(DESTDIR)$(LIBPREFIX)/libgrapheme.so.$(VERSION_MAJOR)"; fi
          355         if [ "$(SOSYMLINK)" = "true" ]; then rm -f "$(DESTDIR)$(LIBPREFIX)/libgrapheme.so"; fi
          356         rm -f "$(DESTDIR)$(INCPREFIX)/grapheme.h"
          357         if ! [ -z "$(LDCONFIG)" ]; then $(SHELL) -c "$(LDCONFIG)"; fi
          358         if ! [ -z "$(PCPREFIX)" ]; then rm -f "$(DESTDIR)$(PCPREFIX)/libgrapheme.pc"; fi
          359 
          360 clean:
          361         rm -f $(BENCHMARK:=.o) benchmark/util.o $(BENCHMARK:=$(BINSUFFIX)) $(GEN:=.h) $(GEN:=.o) gen/util.o $(GEN:=$(BINSUFFIX)) $(GEN2:=.h) $(GEN2:=.o) gen2/util.o $(GEN2:=$(BINSUFFIX)) $(SRC:=.o) src/util.o $(TEST:=.o) test/util.o $(TEST:=$(BINSUFFIX)) $(ANAME) $(SONAME) $(MAN3:=.3) $(MAN7:=.7)
          362 
          363 clean-data:
          364         rm -f $(DATA)
          365 
          366 dist:
          367         rm -rf "libgrapheme-$(VERSION)"
          368         mkdir "libgrapheme-$(VERSION)"
          369         for m in benchmark data gen man man/template src test; do mkdir "libgrapheme-$(VERSION)/$$m"; done
          370         cp config.mk configure grapheme.h LICENSE Makefile README "libgrapheme-$(VERSION)"
          371         cp $(BENCHMARK:=.c) benchmark/util.c benchmark/util.h "libgrapheme-$(VERSION)/benchmark"
          372         cp $(DATA) "libgrapheme-$(VERSION)/data"
          373         cp $(GEN:=.c) gen/util.c gen/types.h gen/util.h "libgrapheme-$(VERSION)/gen"
          374         cp $(MAN3:=.sh) $(MAN7:=.sh) "libgrapheme-$(VERSION)/man"
          375         cp $(MAN_TEMPLATE) "libgrapheme-$(VERSION)/man/template"
          376         cp $(SRC:=.c) src/util.h "libgrapheme-$(VERSION)/src"
          377         cp $(TEST:=.c) test/util.c test/util.h "libgrapheme-$(VERSION)/test"
          378         tar -cf - "libgrapheme-$(VERSION)" | gzip -c > "libgrapheme-$(VERSION).tar.gz"
          379         rm -rf "libgrapheme-$(VERSION)"
          380 
          381 format:
          382         clang-format -i grapheme.h $(BENCHMARK:=.c) benchmark/util.c benchmark/util.h $(GEN:=.c) gen/util.c gen/types.h gen/util.h $(SRC:=.c) src/util.h $(TEST:=.c) test/util.c test/util.h
          383 
          384 .PHONY: all benchmark check clean clean-data dist format install test uninstall