Makefile

Mon, 03 Oct 2022 12:56:28 +0200

author
Mike Becker <universe@uap-core.de>
date
Mon, 03 Oct 2022 12:56:28 +0200
changeset 65
7dd4fd1e7071
parent 64
60decfc9ad13
child 67
5da2cb5aea6b
permissions
-rw-r--r--

rewrite Makefile to work with different getopt implementations

universe@0 1 #
universe@0 2 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
universe@0 3 #
universe@35 4 # Copyright 2016 Mike Becker. All rights reserved.
universe@0 5 #
universe@0 6 # Redistribution and use in source and binary forms, with or without
universe@0 7 # modification, are permitted provided that the following conditions are met:
universe@0 8 #
universe@0 9 # 1. Redistributions of source code must retain the above copyright
universe@0 10 # notice, this list of conditions and the following disclaimer.
universe@0 11 #
universe@0 12 # 2. Redistributions in binary form must reproduce the above copyright
universe@0 13 # notice, this list of conditions and the following disclaimer in the
universe@0 14 # documentation and/or other materials provided with the distribution.
universe@0 15 #
universe@0 16 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
universe@0 17 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
universe@0 18 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
universe@0 19 # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
universe@0 20 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
universe@0 21 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
universe@0 22 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
universe@0 23 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
universe@0 24 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
universe@0 25 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
universe@0 26 # POSSIBILITY OF SUCH DAMAGE.
universe@0 27 #
universe@0 28
universe@37 29 # available configs: gcc, clang
universe@37 30 CONF=gcc
universe@0 31
universe@37 32 include $(CONF).mk
universe@37 33
universe@55 34 SRC = frontend.c
universe@55 35 SRC += c2html.c
universe@52 36 SRC += highlighter.c
universe@37 37
universe@37 38 OBJ = $(SRC:%.c=build/%$(OBJ_EXT))
universe@37 39
universe@62 40 all: build build/$(BIN)
universe@0 41
universe@37 42 build/$(BIN): $(OBJ)
universe@37 43 $(LD) -o $@ $^ $(LDFLAGS)
universe@37 44
universe@37 45 build/%$(OBJ_EXT): src/%.c
universe@37 46 $(CC) -o $@ $(CFLAGS) -c $<
universe@37 47
universe@0 48 build:
universe@39 49 $(MKDIR) $@
universe@65 50
universe@65 51 test-c: all
universe@65 52 for f in ctest bigtest empty ; do \
universe@65 53 echo "test/$$f.c" ; \
universe@65 54 ./build/$(BIN) -o "build/$$f.html" \
universe@65 55 -H test/header.html \
universe@65 56 -F test/footer.html \
universe@65 57 "test/$$f.c" && \
universe@65 58 diff "build/$$f.html" "test/golden-master/$$f.html" ; \
universe@65 59 done
universe@65 60
universe@65 61 test-java: all
universe@65 62 for f in javatest ; do \
universe@65 63 ./build/$(BIN) -j -o "build/$$f.html" \
universe@65 64 -H test/jheader.html \
universe@65 65 -F test/footer.html \
universe@65 66 "test/$$f.java" && \
universe@65 67 diff "build/$$f.html" "test/golden-master/$$f.html" ; \
universe@65 68 done
universe@65 69
universe@65 70 test-plain: all
universe@65 71 for f in plain ; do \
universe@65 72 ./build/$(BIN) -p -o "build/$$f.html" \
universe@65 73 -H test/header.html \
universe@65 74 -F test/footer.html \
universe@65 75 "test/$$f.txt" && \
universe@65 76 diff "build/$$f.html" "test/golden-master/$$f.html" ; \
universe@65 77 done
universe@65 78
universe@65 79 test: test-c test-java test-plain
universe@65 80 @echo "Tests successful."
universe@41 81
universe@0 82 clean:
universe@37 83 $(RM) $(RMFLAGS) build

mercurial