Makefile - libzahl - big integer library
 (HTM) git clone git://git.suckless.org/libzahl
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       Makefile (5457B)
       ---
            1 CONFIG = config.mk
            2 include $(CONFIG)
            3 
            4 HDR_SEMIPUBLIC =\
            5         zahl/inlines.h\
            6         zahl/internals.h\
            7         zahl/memory.h
            8 
            9 HDR_PRIVATE =\
           10         src/internals.h
           11 
           12 FUN =\
           13         zadd\
           14         zand\
           15         zbset\
           16         zdivmod\
           17         zerror\
           18         zfree\
           19         zgcd\
           20         zload\
           21         zlsh\
           22         zmodmul\
           23         zmodpow\
           24         zmodpowu\
           25         zmodsqr\
           26         zmul\
           27         znot\
           28         zor\
           29         zperror\
           30         zpow\
           31         zpowu\
           32         zptest\
           33         zrand\
           34         zrsh\
           35         zsets\
           36         zsetup\
           37         zsqr\
           38         zstr\
           39         zstr_length\
           40         zsub\
           41         ztrunc\
           42         zunsetup\
           43         zxor
           44 
           45 INLINE_FUN =\
           46         zabs\
           47         zbits\
           48         zbtest\
           49         zcmp\
           50         zcmpi\
           51         zcmpmag\
           52         zcmpu\
           53         zdiv\
           54         zeven\
           55         zeven_nonzero\
           56         zinit\
           57         zlsb\
           58         zmod\
           59         zneg\
           60         zodd\
           61         zodd_nonzero\
           62         zsave\
           63         zset\
           64         zseti\
           65         zsetu\
           66         zsignum\
           67         zsplit\
           68         zswap\
           69         zzero
           70 
           71 DOC =\
           72         refsheet.pdf\
           73         libzahl.pdf
           74 
           75 TEXSRC =\
           76         doc/libzahl.tex\
           77         doc/what-is-libzahl.tex\
           78         doc/libzahls-design.tex\
           79         doc/get-started.tex\
           80         doc/miscellaneous.tex\
           81         doc/arithmetic.tex\
           82         doc/bit-operations.tex\
           83         doc/number-theory.tex\
           84         doc/random-numbers.tex\
           85         doc/not-implemented.tex\
           86         doc/exercises.tex
           87 
           88 HDR_PUBLIC = zahl.h $(HDR_SEMIPUBLIC)
           89 HDR        = $(HDR_PUBLIC) $(HDR_PRIVATE)
           90 OBJ        = $(FUN:=.o) allocator.o
           91 MAN3       = $(FUN:=.3) $(INLINE_FUN:=.3)
           92 MAN7       = libzahl.7
           93 
           94 VPATH = src
           95 
           96 BENCHMARK_LIB_            = libzahl.a
           97 BENCHMARK_LIB_zahl        = libzahl.a
           98 BENCHMARK_LIB_libzahl     = libzahl.a
           99 BENCHMARK_LIB_tommath     = -ltommath
          100 BENCHMARK_LIB_libtommath  = -ltommath
          101 BENCHMARK_LIB_gmp         = -lgmp
          102 BENCHMARK_LIB_libgmp      = -lgmp
          103 BENCHMARK_LIB_tfm         = libtfm.a
          104 BENCHMARK_LIB_libtfm      = libtfm.a
          105 BENCHMARK_LIB_hebimath    = libhebimath.a
          106 BENCHMARK_LIB_libhebimath = libhebimath.a
          107 
          108 BENCHMARK_DEP_            = libzahl.a
          109 BENCHMARK_DEP_zahl        = libzahl.a
          110 BENCHMARK_DEP_libzahl     = libzahl.a
          111 BENCHMARK_DEP_tommath     = bench/libtommath.h
          112 BENCHMARK_DEP_libtommath  = bench/libtommath.h
          113 BENCHMARK_DEP_gmp         = bench/libgmp.h
          114 BENCHMARK_DEP_libgmp      = bench/libgmp.h
          115 BENCHMARK_DEP_tfm         = bench/libtfm.h
          116 BENCHMARK_DEP_libtfm      = bench/libtfm.h
          117 BENCHMARK_DEP_hebimath    = bench/libhebimath.h
          118 BENCHMARK_DEP_libhebimath = bench/libhebimath.h
          119 
          120 BENCHMARK_CPP_tommath     = '-DBENCHMARK_LIB="libtommath.h"'
          121 BENCHMARK_CPP_libtommath  = '-DBENCHMARK_LIB="libtommath.h"'
          122 BENCHMARK_CPP_gmp         = '-DBENCHMARK_LIB="libgmp.h"'
          123 BENCHMARK_CPP_libgmp      = '-DBENCHMARK_LIB="libgmp.h"'
          124 BENCHMARK_CPP_tfm         = '-DBENCHMARK_LIB="libtfm.h"'
          125 BENCHMARK_CPP_libtfm      = '-DBENCHMARK_LIB="libtfm.h"'
          126 BENCHMARK_CPP_hebimath    = '-DBENCHMARK_LIB="libhebimath.h"'
          127 BENCHMARK_CPP_libhebimath = '-DBENCHMARK_LIB="libhebimath.h"'
          128 
          129 BENCHMARK_C_hebimath      = -static
          130 BENCHMARK_C_libhebimath   = -static
          131 
          132 CPPFLAGS += $(BENCHMARK_CPP_$(BENCHMARK_LIB))
          133 
          134 CFLAGS_WITHOUT_O = $$(printf '%s\n' $(CFLAGS) | sed '/^-O.*$$/d')
          135 
          136 
          137 all: libzahl.a $(DOC)
          138 
          139 .o: .c $(HDR) $(CONFIG)
          140         $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
          141 
          142 libzahl.a: $(OBJ)
          143         $(AR) -rcs $@ $?
          144 
          145 test-random.c: test-generate.py
          146         ./test-generate.py > test-random.c
          147 
          148 test: test.c libzahl.a test-random.c
          149         $(CC) $(LDFLAGS) $(CFLAGS_WITHOUT_O) -O0 $(CPPFLAGS) -o $@ test.c libzahl.a
          150 
          151 benchmark: bench/benchmark.c bench/util.c bench/util.h $(BENCHMARK_DEP_$(BENCHMARK_LIB))
          152         $(CC) $(LDFLAGS) $(CFLAGS) $(CPPFLAGS) -o $@ bench/benchmark.c bench/util.c \
          153                 $(BENCHMARK_LIB_$(BENCHMARK_LIB)) $(BENCHMARK_C_$(BENCHMARK_LIB))
          154 
          155 benchmark-func: bench/benchmark-func.c bench/util.c bench/util.h $(BENCHMARK_DEP_$(BENCHMARK_LIB))
          156         $(CC) $(LDFLAGS) $(CFLAGS) $(CPPFLAGS) -o $@ bench/benchmark-func.c bench/util.c \
          157                 $(BENCHMARK_LIB_$(BENCHMARK_LIB)) $(BENCHMARK_C_$(BENCHMARK_LIB))
          158 
          159 benchmark-zrand: bench/benchmark-zrand.c bench/util.c bench/util.h libzahl.a
          160         $(CC) $(LDFLAGS) $(CFLAGS) $(CPPFLAGS) -o $@ bench/benchmark-zrand.c bench/util.c libzahl.a
          161 
          162 refsheet.pdf: doc/refsheet.tex
          163         pdflatex doc/refsheet.tex </dev/null
          164         pdflatex doc/refsheet.tex </dev/null
          165         -@printf 'refsheet.%s\n' aux log | xargs rm -- 2>/dev/null
          166 
          167 libzahl.pdf: $(TEXSRC)
          168         pdflatex doc/libzahl.tex </dev/null
          169         pdflatex doc/libzahl.tex </dev/null
          170         -@printf 'libzahl.%s\n' aux idx log maf toc out | xargs rm -- libzahl.mtc* 2>/dev/null
          171 
          172 check: test
          173         ./test
          174 
          175 install: libzahl.a
          176         mkdir -p -- "$(DESTDIR)$(EXECPREFIX)/lib"
          177         mkdir -p -- "$(DESTDIR)$(PREFIX)/include/zahl"
          178         mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man3"
          179         mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man7"
          180         mkdir -p -- "$(DESTDIR)$(DOCPREFIX)/libzahl"
          181         @if test -n "$(DESTDIR)"; then \
          182                 cd man && test -d "$(DESTDIR)$(MANPREFIX)/man7" || \
          183                 (printf '\n\n!!  DESTDIR must be an absolute path.  !!\n\n\n' ; exit 1) \
          184         fi
          185         cp -- libzahl.a "$(DESTDIR)$(EXECPREFIX)/lib"
          186         cp -- zahl.h "$(DESTDIR)$(PREFIX)/include"
          187         cp -- $(HDR_SEMIPUBLIC) "$(DESTDIR)$(PREFIX)/include/zahl"
          188         cd man && cp -- $(MAN3) "$(DESTDIR)$(MANPREFIX)/man3"
          189         cd man && cp -- $(MAN7) "$(DESTDIR)$(MANPREFIX)/man7"
          190         cp -- $(DOC) "$(DESTDIR)$(DOCPREFIX)/libzahl"
          191 
          192 uninstall:
          193         -rm -- "$(DESTDIR)$(EXECPREFIX)/lib/libzahl.a"
          194         -cd -- "$(DESTDIR)$(PREFIX)/include" && rm $(HDR_PUBLIC)
          195         -rmdir -- "$(DESTDIR)$(PREFIX)/include/zahl"
          196         -cd -- "$(DESTDIR)$(MANPREFIX)/man3" && rm $(MAN3)
          197         -cd -- "$(DESTDIR)$(MANPREFIX)/man7" && rm $(MAN7)
          198         -cd -- "$(DESTDIR)$(DOCPREFIX)/libzahl" && rm $(DOC)
          199         -rmdir -- "$(DESTDIR)$(DOCPREFIX)/libzahl"
          200 
          201 clean:
          202         -rm -- *.o *.su *.a *.so test test-random.c 2>/dev/null
          203         -rm -- benchmark benchmark-zrand benchmark-func 2>/dev/null
          204         -rm -- *.aux *.log *.out *.idx *.maf *.mtc* *.toc 2>/dev/null
          205         -rm -- refsheet.pdf refsheet.dvi refsheet.ps 2>/dev/null
          206         -rm -- libzahl.pdf libzahl.dvi libzahl.ps 2>/dev/null
          207 
          208 .PHONY: all check clean install uninstall