Added patch by Siddharth Heroor
[Klink.git] / makefile
blobc124e071f41a338a345b951506c96c3c0e0c429a
1 # Makefile for Klink
2 # Time-stamp: <2002-06-24 14:13:27 gildea>
4 # Windows/2000
5 #CC = cl -nologo
6 #DEBUG= -W3 -Z7 -MD
7 #DL_FLAGS=
8 #SYS_LIBS=
9 #Osuf=obj
10 #SOsuf=dll
11 #LIBsuf=.lib
12 #EXE_EXT=.exe
13 #LD = link -nologo
14 #LDFLAGS = -debug -map -dll -incremental:no
15 #LIBPREFIX =
16 #OUT = -out:$@
17 #RM= -del
18 #AR= echo
20 # Unix, generally
21 CC = gcc -fpic $(CFLAGS)
22 DEBUG=-g -Wall -Wno-char-subscripts -O
23 Osuf=o
24 SOsuf=so
25 LIBsuf=a
26 EXE_EXT=
27 LIBPREFIX=lib
28 OUT = -o $@
29 RM= -rm -f
30 AR= ar crs
32 # Linux
33 LD = gcc
34 LOCAL_LDFLAGS = -shared $(LDFLAGS)
35 DEBUG=-g -O -Wall -Wno-unused-function
36 SYS_LIBS= -ldl -lgc
37 PLATFORM_FEATURES=
39 # Cygwin
40 #PLATFORM_FEATURES = -DUSE_STRLWR=0
43 # Solaris
44 #SYS_LIBS= -ldl -lc
45 #Osuf=o
46 #SOsuf=so
47 #EXE_EXT=
48 #LD = ld
49 #LOCAL_LDFLAGS = -G -Bsymbolic -z text $(LDFLAGS)
50 #LIBPREFIX = lib
51 #OUT = -o $@
53 FEATURES = $(PLATFORM_FEATURES) -DUSE_DL=1 -DUSE_MATH=0 -DUSE_ASCII_NAMES=0
55 OBJS = klink.$(Osuf) dynload.$(Osuf)
57 LIBTARGET = $(LIBPREFIX)klink.$(SOsuf)
58 STATICLIBTARGET = $(LIBPREFIX)klink.$(LIBsuf)
59 RGSTRBLS = registerables/ground.inc registerables/unsafe.inc \
60 registerables/simple.inc registerables/type-keys.inc \
61 registerables/all-builtins.inc
63 all: $(LIBTARGET) $(STATICLIBTARGET) klink$(EXE_EXT)
65 %.$(Osuf): %.c
66 $(CC) -I. -c $(DEBUG) $(FEATURES) $(DL_FLAGS) $<
68 $(LIBTARGET): $(OBJS)
69 $(LD) $(LOCAL_LDFLAGS) $(OUT) $(OBJS) $(SYS_LIBS)
71 klink$(EXE_EXT): $(OBJS)
72 $(CC) -o $@ $(DEBUG) $(OBJS) $(SYS_LIBS)
74 $(STATICLIBTARGET): $(OBJS)
75 $(AR) $@ $(OBJS)
77 $(OBJS): klink.h klink-private.h $(RGSTRBLS)
78 dynload.$(Osuf): dynload.h
80 clean:
81 $(RM) $(OBJS) $(LIBTARGET) $(STATICLIBTARGET) klink$(EXE_EXT)
82 $(RM) klink.ilk klink.map klink.pdb klink.lib klink.exp
83 $(RM) *~
85 TAGS_SRCS = klink.h klink.c dynload.h dynload.c
87 tags: TAGS
88 TAGS: $(TAGS_SRCS)
89 etags $(TAGS_SRCS)
91 %.reg:%.c
92 gcc -DCOLLECT_RGSTRS -E $*.c \
93 | sed 's/_K_END_RGSTR/_K_END_RGSTR\n/' \
94 | grep --only-matching --no-filename "_K_RGSTR.*_K_END_RGSTR" \
95 | sed 's/_K_RGSTR *\(.*\)_K_END_RGSTR/\1/' \
96 > $*.reg
98 registerables/%.inc:
99 cat $^ \
100 | grep --no-filename "^$*:" \
101 | cut --delimiter=":" -f 2- \
102 > registerables/$*.inc
104 ##Explicitly give each inclusion's dependencies.
105 registerables/ground.inc: klink.reg
106 registerables/unsafe.inc: klink.reg
107 registerables/simple.inc: klink.reg
108 registerables/type-keys.inc: klink.reg
109 registerables/all-builtins.inc: klink.reg