-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
82 lines (63 loc) · 2.45 KB
/
Makefile
File metadata and controls
82 lines (63 loc) · 2.45 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
CC = gcc
CFLAGS = -Wall -O2 -std=c99 -Isrc
LDFLAGS = -lm
# SIMD optimization flags
ifeq ($(ARCH),arm)
CFLAGS += -mfpu=neon -DUSE_SIMD_CONVERT -DUSE_SIMD_DCT
endif
ifeq ($(ARCH),aarch64)
CFLAGS += -DUSE_SIMD_CONVERT -DUSE_SIMD_DCT
endif
ifeq ($(ARCH),mips)
CFLAGS += -mmsa -DUSE_SIMD_CONVERT -DUSE_SIMD_DCT
endif
ifeq ($(ARCH),x86)
CFLAGS += -msse2 -DUSE_SIMD_CONVERT -DUSE_SIMD_DCT
endif
ifeq ($(ARCH),x86_avx)
CFLAGS += -mavx2 -DUSE_SIMD_CONVERT -DUSE_SIMD_DCT
endif
# Source files
SRC_DIR = src
EXAMPLE_DIR = examples
BUILD_DIR = build
# Targets
TARGET_RGB = $(BUILD_DIR)/jpeg_example
TARGET_YUV = $(BUILD_DIR)/jpeg_example_yuv
TARGET_UYVY = $(BUILD_DIR)/jpeg_example_uyvy
TARGET_DECODE = $(BUILD_DIR)/jpeg_example_decode
# Object files
ENCODER_OBJS = $(BUILD_DIR)/jpeg_encoder.o $(BUILD_DIR)/jpeg_simd.o
DECODER_OBJS = $(BUILD_DIR)/jpeg_decoder.o
all: $(BUILD_DIR) $(TARGET_RGB) $(TARGET_YUV) $(TARGET_UYVY) $(TARGET_DECODE)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
# Encoder library objects
$(BUILD_DIR)/jpeg_encoder.o: $(SRC_DIR)/jpeg_encoder.c $(SRC_DIR)/jpeg_encoder.h $(SRC_DIR)/jpeg_simd.h
$(CC) $(CFLAGS) -c $(SRC_DIR)/jpeg_encoder.c -o $@
$(BUILD_DIR)/jpeg_simd.o: $(SRC_DIR)/jpeg_simd.c $(SRC_DIR)/jpeg_simd.h
$(CC) $(CFLAGS) -c $(SRC_DIR)/jpeg_simd.c -o $@
# Decoder library objects
$(BUILD_DIR)/jpeg_decoder.o: $(SRC_DIR)/jpeg_decoder.c $(SRC_DIR)/jpeg_decoder.h
$(CC) $(CFLAGS) -c $(SRC_DIR)/jpeg_decoder.c -o $@
# Example executables
$(TARGET_RGB): $(ENCODER_OBJS) $(BUILD_DIR)/example.o
$(CC) $^ -o $@ $(LDFLAGS)
$(TARGET_YUV): $(ENCODER_OBJS) $(BUILD_DIR)/example_yuv.o
$(CC) $^ -o $@ $(LDFLAGS)
$(TARGET_UYVY): $(ENCODER_OBJS) $(BUILD_DIR)/example_uyvy.o
$(CC) $^ -o $@ $(LDFLAGS)
$(TARGET_DECODE): $(DECODER_OBJS) $(BUILD_DIR)/example_decode.o
$(CC) $^ -o $@ $(LDFLAGS)
# Example object files
$(BUILD_DIR)/example.o: $(EXAMPLE_DIR)/example.c $(SRC_DIR)/jpeg_encoder.h
$(CC) $(CFLAGS) -c $(EXAMPLE_DIR)/example.c -o $@
$(BUILD_DIR)/example_yuv.o: $(EXAMPLE_DIR)/example_yuv.c $(SRC_DIR)/jpeg_encoder.h
$(CC) $(CFLAGS) -c $(EXAMPLE_DIR)/example_yuv.c -o $@
$(BUILD_DIR)/example_uyvy.o: $(EXAMPLE_DIR)/example_uyvy.c $(SRC_DIR)/jpeg_encoder.h
$(CC) $(CFLAGS) -c $(EXAMPLE_DIR)/example_uyvy.c -o $@
$(BUILD_DIR)/example_decode.o: $(EXAMPLE_DIR)/example_decode.c $(SRC_DIR)/jpeg_decoder.h
$(CC) $(CFLAGS) -c $(EXAMPLE_DIR)/example_decode.c -o $@
clean:
rm -rf $(BUILD_DIR) output.jpg output_yuv.jpg output_uyvy.jpg output.rgb565
.PHONY: all clean