Makefile - ubase - suckless linux base utils
 (HTM) git clone git://git.suckless.org/ubase
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       Makefile (6003B)
       ---
            1 include config.mk
            2 
            3 .SUFFIXES:
            4 .SUFFIXES: .o .c
            5 
            6 HDR = \
            7         arg.h        \
            8         config.h     \
            9         passwd.h     \
           10         proc.h       \
           11         queue.h      \
           12         reboot.h     \
           13         rtc.h        \
           14         text.h       \
           15         util.h
           16 
           17 LIBUTIL = libutil.a
           18 LIBUTILSRC = \
           19         libutil/agetcwd.c        \
           20         libutil/agetline.c       \
           21         libutil/apathmax.c       \
           22         libutil/concat.c         \
           23         libutil/ealloc.c         \
           24         libutil/eprintf.c        \
           25         libutil/estrtol.c        \
           26         libutil/estrtoul.c       \
           27         libutil/explicit_bzero.c \
           28         libutil/passwd.c         \
           29         libutil/proc.c           \
           30         libutil/putword.c        \
           31         libutil/recurse.c        \
           32         libutil/strlcat.c        \
           33         libutil/strlcpy.c        \
           34         libutil/strtonum.c       \
           35         libutil/tty.c
           36 
           37 LIB = $(LIBUTIL)
           38 
           39 BIN = \
           40         blkdiscard        \
           41         chvt              \
           42         clear             \
           43         ctrlaltdel        \
           44         dd                \
           45         df                \
           46         dmesg             \
           47         eject             \
           48         fallocate         \
           49         free              \
           50         freeramdisk       \
           51         fsfreeze          \
           52         getty             \
           53         halt              \
           54         hwclock           \
           55         id                \
           56         insmod            \
           57         killall5          \
           58         last              \
           59         lastlog           \
           60         login             \
           61         lsmod             \
           62         lsusb             \
           63         mesg              \
           64         mknod             \
           65         mkswap            \
           66         mount             \
           67         mountpoint        \
           68         nologin           \
           69         pagesize          \
           70         passwd            \
           71         pidof             \
           72         pivot_root        \
           73         ps                \
           74         pwdx              \
           75         readahead         \
           76         respawn           \
           77         rmmod             \
           78         stat              \
           79         su                \
           80         swaplabel         \
           81         swapoff           \
           82         swapon            \
           83         switch_root       \
           84         sysctl            \
           85         truncate          \
           86         umount            \
           87         unshare           \
           88         uptime            \
           89         vtallow           \
           90         watch             \
           91         who
           92 
           93 MAN1 = \
           94         chvt.1              \
           95         clear.1             \
           96         dd.1                \
           97         df.1                \
           98         dmesg.1             \
           99         eject.1             \
          100         fallocate.1         \
          101         free.1              \
          102         id.1                \
          103         login.1             \
          104         mesg.1              \
          105         mknod.1             \
          106         mountpoint.1        \
          107         pagesize.1          \
          108         passwd.1            \
          109         pidof.1             \
          110         ps.1                \
          111         pwdx.1              \
          112         respawn.1           \
          113         stat.1              \
          114         su.1                \
          115         truncate.1          \
          116         unshare.1           \
          117         uptime.1            \
          118         vtallow.1           \
          119         watch.1             \
          120         who.1
          121 
          122 MAN8 = \
          123         ctrlaltdel.8        \
          124         freeramdisk.8       \
          125         fsfreeze.8          \
          126         getty.8             \
          127         halt.8              \
          128         hwclock.8           \
          129         insmod.8            \
          130         killall5.8          \
          131         lastlog.8           \
          132         lsmod.8             \
          133         lsusb.8             \
          134         mkswap.8            \
          135         mount.8             \
          136         nologin.8           \
          137         pivot_root.8        \
          138         readahead.8         \
          139         rmmod.8             \
          140         swaplabel.8         \
          141         swapoff.8           \
          142         swapon.8            \
          143         switch_root.8       \
          144         sysctl.8            \
          145         umount.8
          146 
          147 LIBUTILOBJ = $(LIBUTILSRC:.c=.o)
          148 OBJ = $(BIN:=.o) $(LIBUTILOBJ)
          149 SRC = $(BIN:=.c)
          150 
          151 all: $(BIN)
          152 
          153 $(BIN): $(LIB)
          154 
          155 $(OBJ): $(HDR) config.mk
          156 
          157 config.h:
          158         cp config.def.h $@
          159 
          160 .o:
          161         $(CC) $(LDFLAGS) -o $@ $< $(LIB) $(LDLIBS)
          162 
          163 .c.o:
          164         $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
          165 
          166 $(LIBUTIL): $(LIBUTILOBJ)
          167         $(AR) rc $@ $?
          168         $(RANLIB) $@
          169 
          170 install: all
          171         mkdir -p $(DESTDIR)$(PREFIX)/bin
          172         cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin
          173         cd $(DESTDIR)$(PREFIX)/bin && chmod 755 $(BIN)
          174         mkdir -p $(DESTDIR)$(MANPREFIX)/man1
          175         for m in $(MAN1); do sed "s/^\.Os ubase/.Os ubase $(VERSION)/g" < "$$m" > $(DESTDIR)$(MANPREFIX)/man1/"$$m"; done
          176         mkdir -p $(DESTDIR)$(MANPREFIX)/man8
          177         for m in $(MAN8); do sed "s/^\.Os ubase/.Os ubase $(VERSION)/g" < "$$m" > $(DESTDIR)$(MANPREFIX)/man8/"$$m"; done
          178         cd $(DESTDIR)$(MANPREFIX)/man1 && chmod 644 $(MAN1)
          179         cd $(DESTDIR)$(MANPREFIX)/man8 && chmod 644 $(MAN8)
          180 
          181 uninstall:
          182         cd $(DESTDIR)$(PREFIX)/bin && rm -f $(BIN)
          183         cd $(DESTDIR)$(MANPREFIX)/man1 && rm -f $(MAN1)
          184         cd $(DESTDIR)$(MANPREFIX)/man8 && rm -f $(MAN8)
          185 
          186 dist: clean
          187         mkdir -p ubase-$(VERSION)
          188         cp -r LICENSE Makefile README TODO config.mk $(SRC) $(MAN1) $(MAN8) libutil $(HDR) config.def.h ubase-$(VERSION)
          189         tar -cf ubase-$(VERSION).tar ubase-$(VERSION)
          190         gzip ubase-$(VERSION).tar
          191         rm -rf ubase-$(VERSION)
          192 
          193 ubase-box: $(LIB) $(SRC)
          194         mkdir -p build
          195         cp $(HDR) build
          196         cp config.h build
          197         for f in $(SRC); do sed "s/^main(/`basename $$f .c`_&/" < $$f > build/$$f; done
          198         echo '#include <libgen.h>'  > build/$@.c
          199         echo '#include <stdio.h>'  >> build/$@.c
          200         echo '#include <stdlib.h>' >> build/$@.c
          201         echo '#include <string.h>' >> build/$@.c
          202         echo '#include "util.h"'   >> build/$@.c
          203         for f in $(SRC); do echo "int `basename $$f .c`_main(int, char **);" >> build/$@.c; done
          204         echo 'int main(int argc, char *argv[]) { char *s = basename(argv[0]); if(!strcmp(s,"ubase-box")) { argc--; argv++; s = basename(argv[0]); } if(0) ;' >> build/$@.c
          205         for f in $(SRC); do echo "else if(!strcmp(s, \"`basename $$f .c`\")) return `basename $$f .c`_main(argc, argv);" >> build/$@.c; done
          206         echo 'else {' >> build/$@.c
          207         for f in $(SRC); do echo "printf(\"`basename $$f .c`\"); putchar(' ');" >> build/$@.c; done
          208         echo "putchar(0xa); }; return 0; }" >> build/$@.c
          209         $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ build/*.c $(LIB) $(LDLIBS)
          210         rm -r build
          211 
          212 ubase-box-install: ubase-box
          213         mkdir -p $(DESTDIR)$(PREFIX)/bin
          214         cp -f ubase-box $(DESTDIR)$(PREFIX)/bin
          215         chmod 755 $(DESTDIR)$(PREFIX)/bin/ubase-box
          216         for f in $(BIN); do ln -sf ubase-box $(DESTDIR)$(PREFIX)/bin/"$$f"; done
          217         mkdir -p $(DESTDIR)$(MANPREFIX)/man1
          218         for m in $(MAN1); do sed "s/^\.Os ubase/.Os ubase $(VERSION)/g" < "$$m" > $(DESTDIR)$(MANPREFIX)/man1/"$$m"; done
          219         mkdir -p $(DESTDIR)$(MANPREFIX)/man8
          220         for m in $(MAN8); do sed "s/^\.Os ubase/.Os ubase $(VERSION)/g" < "$$m" > $(DESTDIR)$(MANPREFIX)/man8/"$$m"; done
          221         cd $(DESTDIR)$(MANPREFIX)/man1 && chmod 644 $(MAN1)
          222         cd $(DESTDIR)$(MANPREFIX)/man8 && chmod 644 $(MAN8)
          223 
          224 clean:
          225         rm -f $(BIN) $(OBJ) $(LIB) ubase-box ubase-$(VERSION).tar.gz
          226 
          227 .PHONY:
          228         all install uninstall dist ubase-box ubase-box-install clean