-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
66 lines (50 loc) · 1.51 KB
/
Copy pathMakefile
File metadata and controls
66 lines (50 loc) · 1.51 KB
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
CROSS ?= x86_64-elf-
CC := $(CROSS)gcc
AR := $(CROSS)ar
LD := $(CROSS)ld
CFLAGS := -std=c11 -Wall -Wextra -Werror -O2 -ffreestanding \
-fno-stack-protector -fno-pic -m64 -mno-red-zone -Iinclude
MOD_CFLAGS := -std=c11 -Wall -Wextra -Werror -O2 -ffreestanding \
-fno-stack-protector -fno-pic -m64 -mno-red-zone \
-mcmodel=kernel -mgeneral-regs-only -Iinclude
HOST_CC ?= gcc
HOST_CFLAGS := -std=c11 -Wall -Wextra -O2 -Iinclude -D_GNU_SOURCE
BUILD := build
BIN_DIR ?= $(CURDIR)/build
MODULE_DIR := $(BIN_DIR)/modules
LIB := $(BUILD)/libpurecrypt.a
OBJS := $(BUILD)/sha512.o $(BUILD)/crypt_sha512.o
MOD_OBJS := $(BUILD)/sha512.k.o $(BUILD)/crypt_sha512.k.o
MOD_ELF := $(MODULE_DIR)/crypt.elf
MOD_KO := $(MODULE_DIR)/crypt.ko
.PHONY: all module test clean
all: $(LIB)
module: $(MOD_ELF) $(MOD_KO)
$(LIB): $(OBJS)
@mkdir -p $(@D)
$(AR) rcs $@ $^
$(BUILD)/%.o: src/%.c
@mkdir -p $(@D)
$(CC) $(CFLAGS) -c $< -o $@
$(BUILD)/%.k.o: src/%.c
@mkdir -p $(@D)
$(CC) $(MOD_CFLAGS) -MMD -MP -c $< -o $@
$(MOD_ELF): $(MOD_OBJS)
@mkdir -p $(@D)
$(LD) -r -o $@ $^
@echo "crypt module -> $@"
$(MOD_KO): $(MOD_ELF)
@cp $< $@
@echo "crypt module -> $@"
-include $(MOD_OBJS:.o=.d)
test: $(BUILD)/test_sha512 $(BUILD)/test_crypt
./$(BUILD)/test_sha512
./$(BUILD)/test_crypt
$(BUILD)/test_sha512: test/test_sha512.c src/sha512.c
@mkdir -p $(@D)
$(HOST_CC) $(HOST_CFLAGS) $^ -o $@
$(BUILD)/test_crypt: test/test_crypt.c src/sha512.c src/crypt_sha512.c
@mkdir -p $(@D)
$(HOST_CC) $(HOST_CFLAGS) $^ -lcrypt -o $@
clean:
rm -rf $(BUILD)