Fix compatibility with PaX.
[v86d.git] / Makefile
blob3b2ae0086615a5976798c69534eef3e86bd9ccb4
1 config_opt = $(shell if [ -e config.h -a -n "`egrep '^\#define[[:space:]]+$(1)([[:space:]]+|$$)' config.h 2>/dev/null`" ]; then echo true ; fi)
3 .PHONY: clean install install_testvbe x86emu lrmi
5 INSTALL = install
6 KDIR ?= /lib/modules/$(shell uname -r)/source
8 ifeq ($(call config_opt,CONFIG_KLIBC),true)
9 export CC = klcc
10 endif
12 CFLAGS ?= -Wall -g -O2
13 CFLAGS += -I$(KDIR)/include
14 LDFLAGS += -Wl,-z,execheap
16 ifeq ($(call config_opt,CONFIG_X86EMU),true)
17 CFLAGS += -Ilibs/x86emu
18 LDFLAGS += -Llibs/x86emu
19 LDLIBS += -lx86emu
20 V86OBJS = v86_x86emu.o v86_mem.o
21 V86LIB = x86emu
22 else
23 CFLAGS += -Ilibs/lrmi-0.10
24 LDFLAGS += -Llibs/lrmi-0.10 -static
25 LDLIBS += -llrmi
26 V86OBJS = v86_lrmi.o
27 V86LIB = lrmi
28 endif
30 DEBUG_BUILD =
31 DEBUG_INSTALL =
33 ifeq ($(call config_opt,CONFIG_DEBUG),true)
34 DEBUG_BUILD += testvbe
35 DEBUG_INSTALL += install_testvbe
36 endif
38 all: $(V86LIB) v86d $(DEBUG_BUILD)
40 %.o: %.c v86.h
41 $(CC) $(CFLAGS) -c -o $@ $<
43 v86d: v86.o v86_common.o $(V86OBJS)
44 $(CC) $(LDFLAGS) $+ $(LDLIBS) -o $@
46 testvbe: testvbe.o v86_common.o $(V86OBJS)
47 $(CC) $(LDFLAGS) $+ $(LDLIBS) -o $@
49 x86emu:
50 make -w -C libs/x86emu
52 lrmi:
53 make -e -w -C libs/lrmi-0.10 liblrmi.a
55 clean:
56 rm -rf *.o v86d testvbe
57 $(MAKE) -w -C libs/lrmi-0.10 clean
58 $(MAKE) -w -C libs/x86emu clean
60 distclean: clean
61 rm -rf config.h
63 install: $(DEBUG_INSTALL)
64 $(INSTALL) -D v86d $(DESTDIR)/sbin/v86d
66 install_testvbe:
67 $(INSTALL) -D testvbe $(DESTDIR)/sbin/testvbe