Makefile

changeset 28
72a98cbcb9f1
parent 23
778388400f7b
child 32
51d6e45a7592
equal deleted inserted replaced
27:95a958e3de88 28:72a98cbcb9f1
1 CC = gcc 1 #
2 CARG = -Wall -std=gnu99 -O 2 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3 BUILDDIR = build/ 3 #
4 OBJ = $(shell ls | grep '\.c' | sed 's/^\([^.]*\)\.c$$/${BUILDDIR:/=\/}\1.o/g' | tr '\n' ' ') 4 # Copyright 2011 Mike Becker. All rights reserved.
5 BIN = ${BUILDDIR}cline 5 #
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions are met:
8 #
9 # 1. Redistributions of source code must retain the above copyright
10 # notice, this list of conditions and the following disclaimer.
11 #
12 # 2. Redistributions in binary form must reproduce the above copyright
13 # notice, this list of conditions and the following disclaimer in the
14 # documentation and/or other materials provided with the distribution.
15 #
16 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
20 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 #
27 # available configurations:
28 # gcc (default) (will use libc regex implicitly)
29 # mingw (will use libregex as static lib)
30 #
31 # debug configurations:
32 # gcc-debug
33 # mingw-debug
34 #
35
36 #ifndef CONF
37 CONF = gcc
38 #endif
39
40 include ${CONF}.mk
6 41
7 .PHONY: setup run-compile teardown 42 .PHONY: setup run-compile teardown
8 43
9 all: setup run-compile teardown 44 all: setup run-compile teardown
10 45
11 46
12 run-compile: 47 run-compile:
13 -${MAKE} compile 48 -${MAKE} compile
14 49
15 compile: ${OBJ} 50 compile: ${OBJ}
16 ${CC} -o ${BIN} ${OBJ} 51 ${LD} -o ${BIN} ${OBJ} ${LDFLAGS}
17 52
18 setup: 53 setup:
19 mkdir -p ${BUILDDIR} 54 mkdir -p ${BUILDDIR}
20 rm -f build/cline.o 55 rm -f ${BUILDDIR}cline.o
21 mv cline.h cline.src 56 mv cline.h cline.src
22 cat cline.src | sed "s/VERSION.*/VERSION=\"$(shell hg identify -n) ($(shell hg identify -i))\";/g" > cline.h 57 cat cline.src | sed "s/VERSION.*/VERSION=\"$(shell hg identify -n) ($(shell hg identify -i))\";/g" > cline.h
23 58
24 teardown: 59 teardown:
25 rm -f cline.h 60 rm -f cline.h
26 mv cline.src cline.h 61 mv cline.src cline.h
27 62
28 ${BUILDDIR}%.o: %.c 63 ${BUILDDIR}%.o: %.c
29 ${CC} ${CARG} -c -o ${BUILDDIR}$*.o $< 64 ${CC} ${CFLAGS} -c -o ${BUILDDIR}$*.o $<
30 65
31 clean: 66 clean:
32 rm -f build/* 67 rm -f ${BUILDDIR}*.o
33 68

mercurial