blob: 0f093e421693a88a60bee0ce59715ab43751b322 [file] [log] [blame]
# See LICENSE file for copyright and license details
# libgrapheme - unicode string library
.POSIX:
include config.mk
DATA =\
data/emoji-data.txt\
data/GraphemeBreakProperty.txt\
data/GraphemeBreakTest.txt\
GEN =\
gen/character-prop\
gen/character-test\
SRC =\
src/character\
src/utf8\
src/util\
TEST =\
test/character\
test/character-performance\
test/utf8-decode\
test/utf8-encode\
MAN3 =\
man/grapheme_decode_utf8.3\
man/grapheme_encode_utf8.3\
man/grapheme_is_character_break.3\
man/grapheme_next_character_break.3\
MAN7 = man/libgrapheme.7
all: libgrapheme.a libgrapheme.so
gen/character-prop.o: gen/character-prop.c config.mk gen/util.h
gen/character-test.o: gen/character-test.c config.mk gen/util.h
gen/util.o: gen/util.c config.mk gen/util.h
src/character.o: src/character.c config.mk gen/character-prop.h grapheme.h src/util.h
src/utf8.o: src/utf8.c config.mk grapheme.h
src/util.o: src/util.c config.mk grapheme.h src/util.h
test/character.o: test/character.c config.mk gen/character-test.h grapheme.h test/util.h
test/character-performance.o: test/character-performance.c config.mk gen/character-test.h grapheme.h test/util.h
test/utf8-encode.o: test/utf8-encode.c config.mk grapheme.h test/util.h
test/utf8-decode.o: test/utf8-decode.c config.mk grapheme.h test/util.h
test/util.o: test/util.c config.mk test/util.h
gen/character-prop: gen/character-prop.o gen/util.o
gen/character-test: gen/character-test.o gen/util.o
test/character: test/character.o test/util.o libgrapheme.a
test/character-performance: test/character-performance.o test/util.o libgrapheme.a
test/utf8-encode: test/utf8-encode.o test/util.o libgrapheme.a
test/utf8-decode: test/utf8-decode.o test/util.o libgrapheme.a
gen/character-prop.h: data/emoji-data.txt data/GraphemeBreakProperty.txt gen/character-prop
gen/character-test.h: data/GraphemeBreakTest.txt gen/character-test
data/emoji-data.txt:
wget -O $@ https://www.unicode.org/Public/14.0.0/ucd/emoji/emoji-data.txt
data/GraphemeBreakProperty.txt:
wget -O $@ https://www.unicode.org/Public/14.0.0/ucd/auxiliary/GraphemeBreakProperty.txt
data/GraphemeBreakTest.txt:
wget -O $@ https://www.unicode.org/Public/14.0.0/ucd/auxiliary/GraphemeBreakTest.txt
$(GEN):
$(CC) -o $@ $(LDFLAGS) $@.o gen/util.o
$(GEN:=.h):
$(@:.h=) > $@
$(TEST):
$(CC) -o $@ $(LDFLAGS) $@.o test/util.o libgrapheme.a
.c.o:
$(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $<
libgrapheme.a: $(SRC:=.o)
$(AR) rc $@ $?
$(RANLIB) $@
libgrapheme.so: $(SRC:=.o)
$(CC) -o $@ -shared $?
test: $(TEST)
for m in $(TEST); do ./$$m; done
install: all
mkdir -p "$(DESTDIR)$(LIBPREFIX)"
mkdir -p "$(DESTDIR)$(INCPREFIX)"
mkdir -p "$(DESTDIR)$(MANPREFIX)/man3"
mkdir -p "$(DESTDIR)$(MANPREFIX)/man7"
cp -f $(MAN3) "$(DESTDIR)$(MANPREFIX)/man3"
cp -f $(MAN7) "$(DESTDIR)$(MANPREFIX)/man7"
cp -f libgrapheme.a "$(DESTDIR)$(LIBPREFIX)"
cp -f libgrapheme.so "$(DESTDIR)$(LIBPREFIX)"
cp -f grapheme.h "$(DESTDIR)$(INCPREFIX)"
ldconfig || true
uninstall:
for m in $(MAN3); do rm -f "$(DESTDIR)$(MANPREFIX)/man3/`basename $$m`"; done
for m in $(MAN7); do rm -f "$(DESTDIR)$(MANPREFIX)/man7/`basename $$m`"; done
rm -f "$(DESTDIR)$(LIBPREFIX)/libgrapheme.a"
rm -f "$(DESTDIR)$(LIBPREFIX)/libgrapheme.so"
rm -f "$(DESTDIR)$(INCPREFIX)/grapheme.h"
ldconfig || true
clean:
rm -f $(GEN:=.h) $(GEN:=.o) gen/util.o $(GEN) $(SRC:=.o) src/util.o $(TEST:=.o) test/util.o $(TEST) libgrapheme.a libgrapheme.so
clean-data:
rm -f $(DATA)
dist:
mkdir libgrapheme-$(VERSION)
for m in data gen man src test; do mkdir libgrapheme-$(VERSION)/$$m; done
cp config.mk grapheme.h LICENSE Makefile README libgrapheme-$(VERSION)
cp $(DATA) libgrapheme-$(VERSION)/data
cp $(GEN:=.c) gen/util.c gen/util.h libgrapheme-$(VERSION)/gen
cp $(MAN3) $(MAN7) libgrapheme-$(VERSION)/man
cp $(SRC:=.c) src/util.h libgrapheme-$(VERSION)/src
cp $(TEST:=.c) test/util.c test/util.h libgrapheme-$(VERSION)/test
tar -cf libgrapheme-$(VERSION).tar libgrapheme-$(VERSION)
rm -rf libgrapheme-$(VERSION)
.PHONY: all test install uninstall clean clean-data dist