Mercurial > minori
comparison dep/utf8proc/Makefile @ 343:1faa72660932
*: transfer back to cmake from autotools
autotools just made lots of things more complicated than
they should have and many things broke (i.e. translations)
| author | Paper <paper@paper.us.eu.org> |
|---|---|
| date | Thu, 20 Jun 2024 05:56:06 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 342:adb79bdde329 | 343:1faa72660932 |
|---|---|
| 1 # libutf8proc Makefile | |
| 2 | |
| 3 # programs | |
| 4 AR?=ar | |
| 5 CC?=gcc | |
| 6 INSTALL=install | |
| 7 FIND=find | |
| 8 PERL=perl | |
| 9 | |
| 10 # compiler settings | |
| 11 CFLAGS ?= -O2 | |
| 12 PICFLAG = -fPIC | |
| 13 C99FLAG = -std=c99 | |
| 14 WCFLAGS = -Wsign-conversion -Wall -Wextra -pedantic | |
| 15 UCFLAGS = $(CPPFLAGS) $(CFLAGS) $(PICFLAG) $(C99FLAG) $(WCFLAGS) -DUTF8PROC_EXPORTS $(UTF8PROC_DEFINES) | |
| 16 LDFLAG_SHARED = -shared | |
| 17 SOFLAG = -Wl,-soname | |
| 18 | |
| 19 # shared-library version MAJOR.MINOR.PATCH ... this may be *different* | |
| 20 # from the utf8proc version number because it indicates ABI compatibility, | |
| 21 # not API compatibility: MAJOR should be incremented whenever *binary* | |
| 22 # compatibility is broken, even if the API is backward-compatible. | |
| 23 # The API version number is defined in utf8proc.h. | |
| 24 # Be sure to also update these ABI versions in MANIFEST and CMakeLists.txt! | |
| 25 MAJOR=3 | |
| 26 MINOR=0 | |
| 27 PATCH=0 | |
| 28 | |
| 29 # api version (also in utf8proc.h and CMakeLists.txt) | |
| 30 VERSION=2.9.0 | |
| 31 | |
| 32 OS := $(shell uname) | |
| 33 ifeq ($(OS),Darwin) # MacOS X | |
| 34 SHLIB_EXT = dylib | |
| 35 SHLIB_VERS_EXT = $(MAJOR).dylib | |
| 36 else # GNU/Linux, at least (Windows should probably use cmake) | |
| 37 SHLIB_EXT = so | |
| 38 SHLIB_VERS_EXT = so.$(MAJOR).$(MINOR).$(PATCH) | |
| 39 endif | |
| 40 | |
| 41 # installation directories (for 'make install') | |
| 42 prefix=/usr/local | |
| 43 libdir=$(prefix)/lib | |
| 44 includedir=$(prefix)/include | |
| 45 pkgconfigdir=$(libdir)/pkgconfig | |
| 46 | |
| 47 pkglibdir=$(libdir:$(prefix)/%=%) | |
| 48 pkgincludedir=$(includedir:$(prefix)/%=%) | |
| 49 | |
| 50 # meta targets | |
| 51 | |
| 52 .PHONY: all clean data update manifest install | |
| 53 | |
| 54 all: libutf8proc.a libutf8proc.$(SHLIB_EXT) | |
| 55 | |
| 56 clean: | |
| 57 rm -f utf8proc.o libutf8proc.a libutf8proc.$(SHLIB_VERS_EXT) libutf8proc.$(SHLIB_EXT) | |
| 58 rm -f libutf8proc.pc | |
| 59 ifneq ($(OS),Darwin) | |
| 60 rm -f libutf8proc.so.$(MAJOR) | |
| 61 endif | |
| 62 rm -f test/tests.o test/normtest test/graphemetest test/printproperty test/charwidth test/valid test/iterate test/case test/custom test/misc test/iscase | |
| 63 rm -rf MANIFEST.new tmp | |
| 64 $(MAKE) -C bench clean | |
| 65 $(MAKE) -C data clean | |
| 66 | |
| 67 data: data/utf8proc_data.c.new | |
| 68 | |
| 69 update: data/utf8proc_data.c.new | |
| 70 cp -f data/utf8proc_data.c.new utf8proc_data.c | |
| 71 | |
| 72 manifest: MANIFEST.new | |
| 73 | |
| 74 # real targets | |
| 75 | |
| 76 data/utf8proc_data.c.new: libutf8proc.$(SHLIB_EXT) data/data_generator.rb data/charwidths.jl | |
| 77 $(MAKE) -C data utf8proc_data.c.new | |
| 78 | |
| 79 utf8proc.o: utf8proc.h utf8proc.c utf8proc_data.c | |
| 80 $(CC) $(UCFLAGS) -c -o utf8proc.o utf8proc.c | |
| 81 | |
| 82 libutf8proc.a: utf8proc.o | |
| 83 rm -f libutf8proc.a | |
| 84 $(AR) crs libutf8proc.a utf8proc.o | |
| 85 | |
| 86 libutf8proc.so.$(MAJOR).$(MINOR).$(PATCH): utf8proc.o | |
| 87 $(CC) $(LDFLAGS) $(LDFLAG_SHARED) -o $@ $(SOFLAG) -Wl,libutf8proc.so.$(MAJOR) utf8proc.o | |
| 88 chmod a-x $@ | |
| 89 | |
| 90 libutf8proc.so: libutf8proc.so.$(MAJOR).$(MINOR).$(PATCH) | |
| 91 ln -f -s libutf8proc.so.$(MAJOR).$(MINOR).$(PATCH) $@ | |
| 92 ln -f -s libutf8proc.so.$(MAJOR).$(MINOR).$(PATCH) $@.$(MAJOR) | |
| 93 | |
| 94 libutf8proc.$(MAJOR).dylib: utf8proc.o | |
| 95 $(CC) $(LDFLAGS) -dynamiclib -o $@ $^ -install_name $(libdir)/$@ -Wl,-compatibility_version -Wl,$(MAJOR) -Wl,-current_version -Wl,$(MAJOR).$(MINOR).$(PATCH) | |
| 96 | |
| 97 libutf8proc.dylib: libutf8proc.$(MAJOR).dylib | |
| 98 ln -f -s libutf8proc.$(MAJOR).dylib $@ | |
| 99 | |
| 100 libutf8proc.pc: libutf8proc.pc.in | |
| 101 sed \ | |
| 102 -e 's#PREFIX#$(prefix)#' \ | |
| 103 -e 's#LIBDIR#$(pkglibdir)#' \ | |
| 104 -e 's#INCLUDEDIR#$(pkgincludedir)#' \ | |
| 105 -e 's#VERSION#$(MAJOR).$(MINOR).$(PATCH)#' \ | |
| 106 libutf8proc.pc.in > libutf8proc.pc | |
| 107 | |
| 108 install: libutf8proc.a libutf8proc.$(SHLIB_EXT) libutf8proc.$(SHLIB_VERS_EXT) libutf8proc.pc | |
| 109 mkdir -m 755 -p $(DESTDIR)$(includedir) | |
| 110 $(INSTALL) -m 644 utf8proc.h $(DESTDIR)$(includedir) | |
| 111 mkdir -m 755 -p $(DESTDIR)$(libdir) | |
| 112 $(INSTALL) -m 644 libutf8proc.a $(DESTDIR)$(libdir) | |
| 113 $(INSTALL) -m 755 libutf8proc.$(SHLIB_VERS_EXT) $(DESTDIR)$(libdir) | |
| 114 mkdir -m 755 -p $(DESTDIR)$(pkgconfigdir) | |
| 115 $(INSTALL) -m 644 libutf8proc.pc $(DESTDIR)$(pkgconfigdir)/libutf8proc.pc | |
| 116 ln -f -s libutf8proc.$(SHLIB_VERS_EXT) $(DESTDIR)$(libdir)/libutf8proc.$(SHLIB_EXT) | |
| 117 ifneq ($(OS),Darwin) | |
| 118 ln -f -s libutf8proc.$(SHLIB_VERS_EXT) $(DESTDIR)$(libdir)/libutf8proc.so.$(MAJOR) | |
| 119 endif | |
| 120 | |
| 121 MANIFEST.new: | |
| 122 rm -rf tmp | |
| 123 $(MAKE) install prefix=/usr DESTDIR=$(PWD)/tmp | |
| 124 $(FIND) tmp/usr -mindepth 1 -type l -printf "%P -> %l\n" -or -type f -printf "%P\n" -or -type d -printf "%P/\n" | LC_ALL=C sort > $@ | |
| 125 rm -rf tmp | |
| 126 | |
| 127 # Test programs | |
| 128 | |
| 129 data/NormalizationTest.txt: | |
| 130 $(MAKE) -C data NormalizationTest.txt | |
| 131 | |
| 132 data/GraphemeBreakTest.txt: | |
| 133 $(MAKE) -C data GraphemeBreakTest.txt | |
| 134 | |
| 135 data/Lowercase.txt: | |
| 136 $(MAKE) -C data Lowercase.txt | |
| 137 | |
| 138 data/Uppercase.txt: | |
| 139 $(MAKE) -C data Uppercase.txt | |
| 140 | |
| 141 test/tests.o: test/tests.c test/tests.h utf8proc.h | |
| 142 $(CC) $(UCFLAGS) -c -o test/tests.o test/tests.c | |
| 143 | |
| 144 test/normtest: test/normtest.c test/tests.o utf8proc.o utf8proc.h test/tests.h | |
| 145 $(CC) $(UCFLAGS) $(LDFLAGS) test/normtest.c test/tests.o utf8proc.o -o $@ | |
| 146 | |
| 147 test/graphemetest: test/graphemetest.c test/tests.o utf8proc.o utf8proc.h test/tests.h | |
| 148 $(CC) $(UCFLAGS) $(LDFLAGS) test/graphemetest.c test/tests.o utf8proc.o -o $@ | |
| 149 | |
| 150 test/printproperty: test/printproperty.c test/tests.o utf8proc.o utf8proc.h test/tests.h | |
| 151 $(CC) $(UCFLAGS) $(LDFLAGS) test/printproperty.c test/tests.o utf8proc.o -o $@ | |
| 152 | |
| 153 test/charwidth: test/charwidth.c test/tests.o utf8proc.o utf8proc.h test/tests.h | |
| 154 $(CC) $(UCFLAGS) $(LDFLAGS) test/charwidth.c test/tests.o utf8proc.o -o $@ | |
| 155 | |
| 156 test/valid: test/valid.c test/tests.o utf8proc.o utf8proc.h test/tests.h | |
| 157 $(CC) $(UCFLAGS) $(LDFLAGS) test/valid.c test/tests.o utf8proc.o -o $@ | |
| 158 | |
| 159 test/iterate: test/iterate.c test/tests.o utf8proc.o utf8proc.h test/tests.h | |
| 160 $(CC) $(UCFLAGS) $(LDFLAGS) test/iterate.c test/tests.o utf8proc.o -o $@ | |
| 161 | |
| 162 test/iscase: test/iscase.c test/tests.o utf8proc.o utf8proc.h test/tests.h | |
| 163 $(CC) $(UCFLAGS) $(LDFLAGS) test/iscase.c test/tests.o utf8proc.o -o $@ | |
| 164 | |
| 165 test/case: test/case.c test/tests.o utf8proc.o utf8proc.h test/tests.h | |
| 166 $(CC) $(UCFLAGS) $(LDFLAGS) test/case.c test/tests.o utf8proc.o -o $@ | |
| 167 | |
| 168 test/custom: test/custom.c test/tests.o utf8proc.o utf8proc.h test/tests.h | |
| 169 $(CC) $(UCFLAGS) $(LDFLAGS) test/custom.c test/tests.o utf8proc.o -o $@ | |
| 170 | |
| 171 test/misc: test/misc.c test/tests.o utf8proc.o utf8proc.h test/tests.h | |
| 172 $(CC) $(UCFLAGS) $(LDFLAGS) -DUNICODE_VERSION='"'`$(PERL) -ne "/^UNICODE_VERSION=/ and print $$';" data/Makefile`'"' test/misc.c test/tests.o utf8proc.o -o $@ | |
| 173 | |
| 174 # make release tarball from master branch | |
| 175 dist: | |
| 176 git archive master --prefix=utf8proc-$(VERSION)/ -o utf8proc-$(VERSION).tar.gz | |
| 177 | |
| 178 # build tarball, make sure it passes checks, and make sure version numbers are consistent | |
| 179 distcheck: dist | |
| 180 test `grep UTF8PROC_VERSION utf8proc.h | cut -d' ' -f3 | tr '\n' .` = $(VERSION). || exit 1 | |
| 181 test `grep "utf8proc VERSION" CMakeLists.txt |cut -d' ' -f 4` = $(VERSION) || exit 1 | |
| 182 test `grep libutf8proc.so.$(MAJOR).$(MINOR).$(PATCH) MANIFEST | wc -l` = 3 || exit 1 | |
| 183 test `grep 'set(SO_' CMakeLists.txt |cut -d' ' -f2 | tr -d ')' | tr '\n' '.'` = $(MAJOR).$(MINOR).$(PATCH). || exit 1 | |
| 184 tar xzf utf8proc-$(VERSION).tar.gz | |
| 185 make -C utf8proc-$(VERSION) check | |
| 186 rm -rf utf8proc-$(VERSION) | |
| 187 | |
| 188 check: test/normtest data/NormalizationTest.txt data/Lowercase.txt data/Uppercase.txt test/graphemetest data/GraphemeBreakTest.txt test/printproperty test/case test/iscase test/custom test/charwidth test/misc test/valid test/iterate bench/bench.c bench/util.c bench/util.h utf8proc.o | |
| 189 $(MAKE) -C bench | |
| 190 test/normtest data/NormalizationTest.txt | |
| 191 test/graphemetest data/GraphemeBreakTest.txt | |
| 192 test/charwidth | |
| 193 test/misc | |
| 194 test/valid | |
| 195 test/iterate | |
| 196 test/case | |
| 197 test/iscase data/Lowercase.txt data/Uppercase.txt | |
| 198 test/custom |
