blob: a4a891180f6dbf9525badcda19ce14797ab4d99a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
CC := gcc
CFLAGS = -std=c99 -Wall -Wextra -Wpedantic -g
SRCD := src
OBJD := obj
BIND := bin
SRCS = $(shell find $(SRCD)/$(SUBD) -type f)
OBJS = $(SRCS:$(SRCD)/$(SUBD)/%.c=$(OBJD)/$(SUBD)/%.o)
DAEMON_TARGET_NAME := daemon
CLIENT_TARGET_NAME := client
MODULE_TARGET_NAME := keylogger.ko
KERNEL_NAME := kernel-$(shell uname -r)
INITFS_NAME := initramfs.img
export
all: daemon client module
daemon client module:
$(MAKE) $(BIND)/$($(shell echo $@ | tr '[:lower:]' '[:upper:]')_TARGET_NAME) SUBD=$@
clean:
rm -rf $(BIND)
rm -rf $(OBJD)
# generic build
$(BIND)/%: $(OBJS)
mkdir -p $(dir $@)
$(CC) $(CFLAGS) $(SFLAGS) $^ -o $@
$(OBJD)/$(SUBD)/%.o: $(SRCD)/$(SUBD)/%.c
mkdir -p $(dir $@)
$(CC) $(CFLAGS) $(SFLAGS) -c $^ -o $@
# build a module
$(BIND)/%.ko: $(SRCS)
mkdir -p $(dir $@); mkdir -p $(OBJD)/$(SUBD)
make -C $(SRCD)/$(SUBD) name=$(@:$(BIND)/%.ko=%)
mv $(SRCD)/$(SUBD)/*.o $(OBJD)/$(SUBD)
mv $(SRCD)/$(SUBD)/*.ko $@
make -C $(SRCD)/$(SUBD) clean
# VM things
vm: vm.sh $(BIND)/$(INITFS_NAME) $(BIND)/$(KERNEL_NAME)
./vm.sh run
$(BIND)/$(INITFS_NAME): $(SRCD)/initramfs-init.sh module
./vm.sh initramfs $@ $^
$(BIND)/$(KERNEL_NAME):
./vm.sh kernel $@
|