This repository was archived by the owner on Apr 20, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile.MinGW
More file actions
141 lines (109 loc) · 7.18 KB
/
Copy pathMakefile.MinGW
File metadata and controls
141 lines (109 loc) · 7.18 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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# define our object and binary directories
TOP_DIR=$(shell echo %cd%)
OBJ_DIR=obj
BIN_DIR=bin
PGO_DIR=$(TOP_DIR)\pgo
# define our directories
BENCHMARK_DIR=RunBenchmark
BGZF_DIR=bgzf
UTILITIES_DIR=utilities
LIBDEFLATE_DIR=libdeflate
ZLIB-NG_DIR=zlib-ng
ZSTD_DIR=zstd
# define our object directories
ZLIB-NG_OBJ_DIR=$(OBJ_DIR)\zlib-ng
LIBDEFLATE_OBJ_DIR=$(OBJ_DIR)\libdeflate
ZSTD_OBJ_DIR=$(OBJ_DIR)\zstd
# define our include directories
BENCHMARK_INCLUDE=-I $(TOP_DIR)\$(BENCHMARK_DIR)
BGZF_INCLUDE=-I $(TOP_DIR)\$(ZLIB-NG_DIR) -I $(TOP_DIR)\$(LIBDEFLATE_DIR)
LIBDEFLATE_INCLUDE=-I $(TOP_DIR)\$(LIBDEFLATE_DIR)
ZLIB-NG_INCLUDE=-I $(TOP_DIR)\$(ZLIB-NG_DIR)
BENCHMARK_INCLUDE=-I $(TOP_DIR)\$(BENCHMARK_DIR) -I $(TOP_DIR)\$(BGZF_DIR) -I $(TOP_DIR)\$(ZSTD_DIR)\lib
# defines
ZLIB-NG_DEFINES=-DHAVE_VISIBILITY_HIDDEN -DHAVE_VISIBILITY_INTERNAL -DHAVE_BUILTIN_CTZ -DHAVE_BUILTIN_CTZLL -DUNALIGNED_OK -DUNALIGNED64_OK -DX86_FEATURES -DX86_SSE42_CRC_HASH -DX86_SSE42_CRC_INTRIN -DX86_SSE42_CMP_STR -DX86_SSE2 -DX86_SSE2_CHUNKSET -DX86_SSSE3 -DX86_SSSE3_ADLER32 -DX86_PCLMULQDQ_CRC
ZSTD_DEFINES=-DHAVE_LZ4=0 -DHAVE_LZMA=0 -DHAVE_THREAD=1 -DHAVE_ZLIB=0 -DZSTD_LEGACY_SUPPORT=0 -DZSTD_NOBENCH -DDISABLE_GZIP -DDISABLE_ZLIB
# define our output library
SHAREDLIB=BlockCompression.dll
SHAREDLIB_PATH=$(BIN_DIR)\$(SHAREDLIB)
# define our output program
RUNBENCHMARK_PATH=$(BIN_DIR)\RunBenchmark.exe
LIBS=-L $(TOP_DIR)\$(BIN_DIR) -Wl,-rpath,$(TOP_DIR)\$(BIN_DIR) -lBlockCompression
# define some default flags
CC=gcc
CPP=g++
CFLAGS=-O3 -fPIC -flto -flto-partition=one
# For profile-guided optimization:
# -fprofile-dir=$(PGO_DIR) -fprofile-generate=$(PGO_DIR)
# -fprofile-dir=$(PGO_DIR) -fprofile-use=$(PGO_DIR) -fprofile-correction
CPPFLAGS=-std=c++11
# Ideally this should be -march=native, but too many of our users didn't have modern AVX support - so I left it at ivybridge.
# For true non-AVX support, you could use westmere
MARCH=-march=ivybridge -mtune=haswell
LDFLAGS=-Wl,-Bstatic -static-libgcc -Wl,-Bdynamic
LDSHARED=$(CC) -shared -Wl,-soname,$(SHAREDLIB),--version-script,BlockCompression.map
# define our source files
BGZF_SOURCES=$(BGZF_DIR)\bgzf.c
BGZF_OBJS=$(addprefix $(OBJ_DIR)\,$(notdir $(BGZF_SOURCES:.c=.o)))
UTILITIES_SOURCES=$(UTILITIES_DIR)\get_library_id.c
UTILITIES_OBJS=$(addprefix $(OBJ_DIR)\,$(notdir $(UTILITIES_SOURCES:.c=.o)))
LIBDEFLATE_SOURCES=$(LIBDEFLATE_DIR)\lib\crc32.c $(LIBDEFLATE_DIR)\lib\deflate_compress.c $(LIBDEFLATE_DIR)\lib\deflate_decompress.c $(LIBDEFLATE_DIR)\lib\utils.c $(LIBDEFLATE_DIR)\lib\x86\cpu_features.c
LIBDEFLATE_OBJS=$(addprefix $(LIBDEFLATE_OBJ_DIR)\,$(notdir $(LIBDEFLATE_SOURCES:.c=.o)))
ZLIB-NG_SOURCES=$(ZLIB-NG_DIR)\adler32.c $(ZLIB-NG_DIR)\arch\x86\adler32_ssse3.c $(ZLIB-NG_DIR)\arch\x86\chunkset_sse.c $(ZLIB-NG_DIR)\arch\x86\compare258_sse.c $(ZLIB-NG_DIR)\arch\x86\crc_folding.c $(ZLIB-NG_DIR)\arch\x86\insert_string_sse.c $(ZLIB-NG_DIR)\arch\x86\slide_sse.c $(ZLIB-NG_DIR)\arch\x86\x86.c $(ZLIB-NG_DIR)\chunkset.c $(ZLIB-NG_DIR)\compare258.c $(ZLIB-NG_DIR)\compress.c $(ZLIB-NG_DIR)\crc32.c $(ZLIB-NG_DIR)\deflate.c $(ZLIB-NG_DIR)\deflate_quick.c $(ZLIB-NG_DIR)\deflate_fast.c $(ZLIB-NG_DIR)\deflate_medium.c $(ZLIB-NG_DIR)\deflate_slow.c $(ZLIB-NG_DIR)\functable.c $(ZLIB-NG_DIR)\insert_string.c $(ZLIB-NG_DIR)\trees.c $(ZLIB-NG_DIR)\zutil.c
ZLIB-NG_OBJS=$(addprefix $(ZLIB-NG_OBJ_DIR)\,$(notdir $(ZLIB-NG_SOURCES:.c=.o)))
ZCONF-NG_H=$(ZLIB-NG_DIR)\zconf-ng.h
ZSTD_SOURCES=$(ZSTD_DIR)\lib\common\entropy_common.c $(ZSTD_DIR)\lib\common\error_private.c $(ZSTD_DIR)\lib\common\fse_decompress.c $(ZSTD_DIR)\lib\common\zstd_common.c $(ZSTD_DIR)\lib\common\xxhash.c $(ZSTD_DIR)\lib\compress\fse_compress.c $(ZSTD_DIR)\lib\compress\hist.c $(ZSTD_DIR)\lib\compress\huf_compress.c $(ZSTD_DIR)\lib\compress\zstd_compress.c $(ZSTD_DIR)\lib\compress\zstd_compress_literals.c $(ZSTD_DIR)\lib\compress\zstd_compress_sequences.c $(ZSTD_DIR)\lib\compress\zstd_compress_superblock.c $(ZSTD_DIR)\lib\compress\zstd_double_fast.c $(ZSTD_DIR)\lib\compress\zstd_fast.c $(ZSTD_DIR)\lib\compress\zstd_lazy.c $(ZSTD_DIR)\lib\compress\zstd_ldm.c $(ZSTD_DIR)\lib\compress\zstd_opt.c $(ZSTD_DIR)\lib\decompress\huf_decompress.c $(ZSTD_DIR)\lib\decompress\zstd_ddict.c $(ZSTD_DIR)\lib\decompress\zstd_decompress.c $(ZSTD_DIR)\lib\decompress\zstd_decompress_block.c
ZSTD_OBJS=$(addprefix $(ZSTD_OBJ_DIR)\,$(notdir $(ZSTD_SOURCES:.c=.o)))
BENCHMARK_SOURCES=$(BENCHMARK_DIR)\Benchmark.cpp $(BENCHMARK_DIR)\BenchmarkStatistics.cpp $(BENCHMARK_DIR)\CompressionData.cpp $(BENCHMARK_DIR)\MemoryUtilities.cpp $(BENCHMARK_DIR)\RunBenchmark.cpp $(BENCHMARK_DIR)\Runner.cpp $(BENCHMARK_DIR)\ZlibNextGen.cpp $(BENCHMARK_DIR)\Zstandard.cpp $(BENCHMARK_DIR)\ZstandardDict.cpp
BENCHMARK_OBJS=$(addprefix $(OBJ_DIR)\,$(notdir $(BENCHMARK_SOURCES:.cpp=.o)))
all: $(ZCONF-NG_H) $(OBJ_DIR) $(BIN_DIR) $(PGO_DIR) $(SHAREDLIB_PATH) $(RUNBENCHMARK_PATH)
clean:
@echo - cleaning the output directory
@-rmdir /S /Q $(OBJ_DIR) $(BIN_DIR) 2>NUL
realclean: clean
@-rmdir /S /Q $(PGO_DIR) 2>NUL
$(OBJ_DIR):
@md $(LIBDEFLATE_OBJ_DIR) $(ZLIB-NG_OBJ_DIR) $(ZSTD_OBJ_DIR)
$(BIN_DIR):
@md $(BIN_DIR)
$(PGO_DIR):
@md $(PGO_DIR)
$(SHAREDLIB_PATH): $(BGZF_OBJS) $(UTILITIES_OBJS) $(LIBDEFLATE_OBJS) $(ZLIB-NG_OBJS) $(ZSTD_OBJS)
@echo - creating the shared library: $(SHAREDLIB_PATH)
@$(LDSHARED) $(CFLAGS) $(DEFINES) -o $(SHAREDLIB_PATH) $(BGZF_OBJS) $(UTILITIES_OBJS) $(LIBDEFLATE_OBJS) $(ZLIB-NG_OBJS) $(ZSTD_OBJS) $(LDFLAGS)
$(RUNBENCHMARK_PATH): $(SHAREDLIB_PATH) $(BENCHMARK_OBJS)
@echo - creating RunBenchmark: $(RUNBENCHMARK_PATH)
@$(CPP) $(CFLAGS) $(CPPFLAGS) $(MARCH) $(BENCHMARK_INCLUDE) -o $(RUNBENCHMARK_PATH) $(BENCHMARK_OBJS) $(LIBS)
$(ZCONF-NG_H) :
@echo - creating $(ZCONF-NG_H)
@copy zconf-ng.h $(ZCONF-NG_H) >NUL
$(OBJ_DIR)\\%.o : $(BGZF_DIR)\\%.c
@echo - compiling $(*F).c (bgzf)
@$(CC) $(CFLAGS) $(MARCH) $(BGZF_INCLUDE) -c $< -o $@
$(OBJ_DIR)\\%.o : $(UTILITIES_DIR)\\%.c
@echo - compiling $(*F).c (utilities)
@$(CC) $(CFLAGS) $(MARCH) $(UTILITIES_INCLUDE) -c $< -o $@
$(LIBDEFLATE_OBJ_DIR)\\%.o : $(LIBDEFLATE_DIR)\\lib\\%.c
@echo - compiling $(*F).c (libdeflate)
@$(CC) $(CFLAGS) $(MARCH) $(LIBDEFLATE_INCLUDE) -c $< -o $@
$(LIBDEFLATE_OBJ_DIR)\\%.o : $(LIBDEFLATE_DIR)\\lib\\x86\\%.c
@echo - compiling $(*F).c (libdeflate)
@$(CC) $(CFLAGS) $(MARCH) $(LIBDEFLATE_INCLUDE) -c $< -o $@
$(ZSTD_OBJ_DIR)\\%.o : $(ZSTD_DIR)\\lib\\common\\%.c
@echo - compiling $(*F).c (zstd)
@$(CC) $(CFLAGS) $(MARCH) $(ZSTD_INCLUDE) $(ZSTD_DEFINES) -c $< -o $@
$(ZSTD_OBJ_DIR)\\%.o : $(ZSTD_DIR)\\lib\\compress\\%.c
@echo - compiling $(*F).c (zstd)
@$(CC) $(CFLAGS) $(MARCH) $(ZSTD_INCLUDE) $(ZSTD_DEFINES) -c $< -o $@
$(ZSTD_OBJ_DIR)\\%.o : $(ZSTD_DIR)\\lib\\decompress\\%.c
@echo - compiling $(*F).c (zstd)
@$(CC) $(CFLAGS) $(MARCH) $(ZSTD_INCLUDE) $(ZSTD_DEFINES) -c $< -o $@
$(ZLIB-NG_OBJ_DIR)\\%.o : $(ZLIB-NG_DIR)\\%.c
@echo - compiling $(*F).c (zlib-ng)
@$(CC) $(CFLAGS) -Wno-attributes $(MARCH) $(ZLIB-NG_INCLUDE) $(ZLIB-NG_DEFINES) -c $< -o $@
$(ZLIB-NG_OBJ_DIR)\\%.o : $(ZLIB-NG_DIR)\\arch\\x86\\%.c
@echo - compiling $(*F).c (zlib-ng)
@$(CC) $(CFLAGS) -Wno-attributes $(MARCH) $(ZLIB-NG_INCLUDE) $(ZLIB-NG_DEFINES) -c $< -o $@
$(OBJ_DIR)\\%.o : $(BENCHMARK_DIR)\%.cpp
@echo - compiling $(*F).cpp (RunBenchmark)
@$(CPP) $(CFLAGS) $(CPPFLAGS) $(MARCH) $(BENCHMARK_INCLUDE) -c $< -o $@