mirror of
git://git.suckless.org/ubase
synced 2024-12-19 05:14:39 +00:00
4a8e5b14ab
This is a very barebones reboot cmd. Please make sure that your system is in a proper state to reboot before using this. This is likely only useful for very barebones systems like an emergency shell or similar. Normally this command would be part of an actual init system.
105 lines
2.6 KiB
Makefile
105 lines
2.6 KiB
Makefile
include config.mk
|
|
|
|
.POSIX:
|
|
.SUFFIXES: .c .o
|
|
|
|
HDR = util.h arg.h ubase.h
|
|
LIB = \
|
|
$(OS)/grabmntinfo.o \
|
|
$(OS)/syslog.o \
|
|
$(OS)/umount.o \
|
|
util/eprintf.o \
|
|
util/estrtol.o
|
|
|
|
SRC = \
|
|
df.c \
|
|
dmesg.c \
|
|
umount.c
|
|
|
|
ifeq ($(OS),linux)
|
|
SRC += \
|
|
insmod.c \
|
|
lsmod.c \
|
|
mkswap.c \
|
|
reboot.c \
|
|
rmmod.c
|
|
endif
|
|
|
|
OBJ = $(SRC:.c=.o) $(LIB)
|
|
BIN = $(SRC:.c=)
|
|
MAN = $(SRC:.c=.1)
|
|
|
|
all: options binlib
|
|
|
|
options:
|
|
@echo ubase build options:
|
|
@echo "OS = $(OS)"
|
|
@echo "CFLAGS = $(CFLAGS)"
|
|
@echo "LDFLAGS = $(LDFLAGS)"
|
|
@echo "CC = $(CC)"
|
|
|
|
binlib: util.a
|
|
$(MAKE) bin
|
|
|
|
bin: $(BIN)
|
|
|
|
$(OBJ): util.h config.mk
|
|
|
|
.o:
|
|
@echo LD $@
|
|
@$(LD) -o $@ $< util.a $(LDFLAGS)
|
|
|
|
.c.o:
|
|
@echo CC $<
|
|
@$(CC) -c -o $@ $< $(CFLAGS)
|
|
|
|
util.a: $(LIB)
|
|
@echo AR $@
|
|
@$(AR) -r -c $@ $(LIB)
|
|
@ranlib $@
|
|
|
|
install: all
|
|
@echo installing executables to $(DESTDIR)$(PREFIX)/bin
|
|
@mkdir -p $(DESTDIR)$(PREFIX)/bin
|
|
@cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin
|
|
@cd $(DESTDIR)$(PREFIX)/bin && chmod 755 $(BIN)
|
|
@echo installing manual pages to $(DESTDIR)$(MANPREFIX)/man1
|
|
@mkdir -p $(DESTDIR)$(MANPREFIX)/man1
|
|
@cp -f $(MAN) $(DESTDIR)$(MANPREFIX)/man1
|
|
@cd $(DESTDIR)$(MANPREFIX)/man1 && chmod 644 $(MAN)
|
|
|
|
uninstall:
|
|
@echo removing executables from $(DESTDIR)$(PREFIX)/bin
|
|
@cd $(DESTDIR)$(PREFIX)/bin && rm -f $(BIN)
|
|
@echo removing manual pages from $(DESTDIR)$(MANPREFIX)/man1
|
|
@cd $(DESTDIR)$(MANPREFIX)/man1 && rm -f $(MAN)
|
|
|
|
dist: clean
|
|
@echo creating dist tarball
|
|
@mkdir -p ubase-$(VERSION)
|
|
@cp -r LICENSE Makefile config.mk $(SRC) $(MAN) util $(HDR) ubase-$(VERSION)
|
|
@tar -cf ubase-$(VERSION).tar ubase-$(VERSION)
|
|
@gzip ubase-$(VERSION).tar
|
|
@rm -rf ubase-$(VERSION)
|
|
|
|
ubase-box: $(SRC) util.a
|
|
@echo creating box binary
|
|
@mkdir -p build
|
|
@cp $(HDR) build
|
|
@for f in $(SRC); do sed "s/^main(/`basename $$f .c`_&/" < $$f > build/$$f; done
|
|
@echo '#include <libgen.h>' > build/$@.c
|
|
@echo '#include <stdlib.h>' >> build/$@.c
|
|
@echo '#include <string.h>' >> build/$@.c
|
|
@echo '#include "util.h"' >> build/$@.c
|
|
@for f in $(SRC); do echo "int `basename $$f .c`_main(int, char **);" >> build/$@.c; done
|
|
@echo 'int main(int argc, char *argv[]) { char *s = basename(argv[0]); if(0) ;' >> build/$@.c
|
|
@for f in $(SRC); do echo "else if(!strcmp(s, \"`basename $$f .c`\")) `basename $$f .c`_main(argc, argv);" >> build/$@.c; done
|
|
@printf 'else eprintf("%%s: unknown program\\n", s); return EXIT_SUCCESS; }\n' >> build/$@.c
|
|
@echo LD $@
|
|
@$(LD) -o $@ build/*.c util.a $(CFLAGS) $(LDFLAGS)
|
|
@rm -r build
|
|
|
|
clean:
|
|
@echo cleaning
|
|
@rm -f $(BIN) $(OBJ) $(LIB) util.a ubase-box
|