Gavin Howard | b33afd0 | 2018-08-28 17:08:20 -0600 | [diff] [blame] | 1 | # |
| 2 | # Copyright 2018 Gavin D. Howard |
| 3 | # |
| 4 | # Permission to use, copy, modify, and/or distribute this software for any |
| 5 | # purpose with or without fee is hereby granted. |
| 6 | # |
| 7 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH |
| 8 | # REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY |
| 9 | # AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, |
| 10 | # INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM |
| 11 | # LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR |
| 12 | # OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
| 13 | # PERFORMANCE OF THIS SOFTWARE. |
| 14 | # |
| 15 | |
| 16 | BC_SRC = $(sort $(wildcard src/*.c)) |
| 17 | BC_OBJ = $(BC_SRC:.c=.o) |
| 18 | |
| 19 | GEN = gen |
| 20 | |
| 21 | BC_LIB = lib/lib.bc |
| 22 | |
| 23 | BC_LIB_C = lib/lib.c |
| 24 | BC_LIB_O = lib/lib.o |
| 25 | |
| 26 | BC_EXEC = bc |
| 27 | |
| 28 | PREFIX ?= /usr/local |
| 29 | |
| 30 | INSTALL = ./install.sh |
| 31 | |
| 32 | -include config.mak |
| 33 | |
| 34 | CFLAGS += -Wall -Wextra -pedantic -std=c99 -funsigned-char |
| 35 | CPPFLAGS += -I./include/ -D_POSIX_C_SOURCE=200809L |
| 36 | |
| 37 | LDLIBS += -lm |
| 38 | |
| 39 | HOSTCC ?= $(CC) |
| 40 | |
| 41 | all: $(BC_EXEC) |
| 42 | |
| 43 | help: |
| 44 | @echo "available targets:" |
| 45 | @echo "" |
| 46 | @echo " all build bc (uses config.mak if there is one)" |
| 47 | @echo " clean remove all build files" |
| 48 | @echo " install install to $(PREFIX)/bin" |
| 49 | @echo " uninstall uninstall from $(PREFIX)/bin" |
| 50 | @echo "" |
| 51 | @echo "useful environment variables:" |
| 52 | @echo "" |
| 53 | @echo "CC C compiler" |
| 54 | @echo "HOSTCC Host C compiler" |
| 55 | @echo "CFLAGS C compiler flags" |
| 56 | @echo "CPPFLAGS C preprocessor flags" |
| 57 | @echo "LDLIBS Libraries to link to" |
| 58 | @echo "PREFIX the prefix to install to" |
| 59 | @echo " if PREFIX is \"/usr\", $(BC_EXEC) will be installed to \"/usr/bin\"" |
| 60 | @echo "GEN_EMU Emulator to run $(GEN) under (leave empty if not necessary)" |
| 61 | |
| 62 | $(GEN): |
| 63 | $(HOSTCC) -o $(GEN) lib/$(GEN).c |
| 64 | |
| 65 | $(BC_LIB_C): $(GEN) |
| 66 | $(GEN_EMU) ./$(GEN) $(BC_LIB) $(BC_LIB_C) |
| 67 | |
| 68 | $(BC_EXEC): $(BC_OBJ) $(BC_LIB_O) |
| 69 | $(CC) $(CFLAGS) -o $(BC_EXEC) $(BC_OBJ) $(BC_LIB_O) $(LDLIBS) $(LDFLAGS) |
| 70 | |
| 71 | test: |
| 72 | tests/all.sh |
| 73 | |
| 74 | clean: |
| 75 | $(RM) $(BC_OBJ) |
| 76 | $(RM) $(BC_EXEC) |
| 77 | $(RM) $(GEN) |
| 78 | $(RM) $(BC_LIB_C) |
| 79 | $(RM) $(BC_LIB_O) |
| 80 | $(RM) tests/parse.txt tests/print.txt tests/arctan.txt |
| 81 | $(RM) log_test.txt log_bc.txt |
| 82 | |
| 83 | install: $(BC_EXEC) |
| 84 | $(INSTALL) -Dm 755 $(BC_EXEC) $(DESTDIR)$(PREFIX)/bin/$(BC_EXEC) |
| 85 | |
| 86 | uninstall: |
| 87 | rm -rf $(DESTDIR)$(PREFIX)/bin/$(BC_EXEC) |
| 88 | |
| 89 | .PHONY: all help clean install uninstall test |