@@ -104,21 +104,34 @@ ifneq (, $(findstring darwin, $(ARCH)))
104
104
LIB_DYN_SUFFIX = dylib
105
105
LIB_STATIC_SUFFIX = a
106
106
BIN_SUFFIX = bin
107
+ LDLIBS = -lc
107
108
LDFLAGS =
108
109
LDFLAGS_SO = -shared -Wl,-install_name,lib$(NAME ) .$(LIB_DYN_SUFFIX ) .$(MAJOR )
110
+ LDFLAGS_APP_STATIC =
109
111
CFLAGS_FORTIFY =
110
112
NPROC = sysctl -n hw.ncpu
113
+ else ifneq (, $(findstring mingw, $(ARCH)))
114
+ LIB_DYN_SUFFIX = dll
115
+ LIB_STATIC_SUFFIX = a
116
+ BIN_SUFFIX = exe
117
+ LDLIBS =
118
+ LDFLAGS = -s -Wl,--as-needed -Wl,-Bsymbolic-functions $(SAN_LDFLAGS )
119
+ LDFLAGS_SO = -shared -Wl,-soname,lib$(NAME ) .$(LIB_DYN_SUFFIX ) .$(MAJOR )
120
+ LDFLAGS_APP_STATIC = -s
121
+ CFLAGS_FORTIFY = -D_FORTIFY_SOURCE=2
122
+ NPROC = nproc
111
123
else
112
124
LIB_DYN_SUFFIX = so
113
125
LIB_STATIC_SUFFIX = a
114
126
BIN_SUFFIX = bin
115
- LDFLAGS = -Wl,--as-needed -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now $(SAN_LDFLAGS )
127
+ LDLIBS = -lc
128
+ LDFLAGS = -s -Wl,--as-needed -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now $(SAN_LDFLAGS )
116
129
LDFLAGS_SO = -shared -Wl,-soname,lib$(NAME ) .$(LIB_DYN_SUFFIX ) .$(MAJOR )
130
+ LDFLAGS_APP_STATIC = -s
117
131
CFLAGS_FORTIFY = -D_FORTIFY_SOURCE=2
118
132
NPROC = nproc
119
133
endif
120
134
121
- LDLIBS = -lc
122
135
CFLAGS = $(CFLAGS_G ) $(CFLAGS_O ) $(CFLAGS_FORTIFY ) -Wall -Wextra -Wconversion -Wformat -Wformat-security -Wdeclaration-after-statement -pedantic -Werror -MMD -fPIC -DGS1_LINTER_ERR_STR_EN $(SAN_CFLAGS ) $(UNIT_TEST_CFLAGS ) $(DEBUG_CFLAGS ) $(SLOW_TESTS_CFLAGS )
123
136
124
137
APP = $(BUILD_DIR ) /$(NAME ) .$(BIN_SUFFIX )
@@ -127,7 +140,12 @@ APP_STATIC = $(BUILD_DIR)/$(NAME)-static.$(BIN_SUFFIX)
127
140
TEST_BIN = $(BUILD_DIR ) /$(NAME ) -test.$(BIN_SUFFIX )
128
141
129
142
LIB_STATIC = $(BUILD_DIR ) /lib$(NAME ) .$(LIB_STATIC_SUFFIX )
143
+
144
+ ifneq (, $(findstring mingw, $(ARCH ) ) )
145
+ LIB_SHARED = $(BUILD_DIR ) /lib$(NAME ) .$(LIB_DYN_SUFFIX )
146
+ else
130
147
LIB_SHARED = $(BUILD_DIR ) /lib$(NAME ) .$(LIB_DYN_SUFFIX ) .$(VERSION ) $(BUILD_DIR ) /lib$(NAME ) .$(LIB_DYN_SUFFIX ) $(BUILD_DIR ) /lib$(NAME ) .$(LIB_DYN_SUFFIX ) .$(MAJOR )
148
+ endif
131
149
132
150
PREFIX = /usr/local
133
151
LIBDIR = $(PREFIX ) /lib
@@ -181,6 +199,13 @@ $(BUILD_DIR)/%.o: %.c | $(BUILD_DIR)/
181
199
#
182
200
# Shared library
183
201
#
202
+ ifneq (, $(findstring mingw, $(ARCH ) ) )
203
+
204
+ $(BUILD_DIR ) /lib$(NAME ) .$(LIB_DYN_SUFFIX ) : $(OBJS )
205
+ $(CC ) $(CFLAGS ) $(LDFLAGS ) $(LDFLAGS_SO ) $(LDLIBS ) $^ -o $@
206
+
207
+ else
208
+
184
209
$(BUILD_DIR ) /lib$(NAME ) .$(LIB_DYN_SUFFIX ) : $(BUILD_DIR ) /lib$(NAME ) .$(LIB_DYN_SUFFIX ) .$(VERSION ) $(BUILD_DIR ) /lib$(NAME ) .$(LIB_DYN_SUFFIX ) .$(MAJOR )
185
210
ln -sf $(notdir $< ) $@
186
211
@@ -190,6 +215,7 @@ $(BUILD_DIR)/lib$(NAME).$(LIB_DYN_SUFFIX).$(MAJOR): $(BUILD_DIR)/lib$(NAME).$(LI
190
215
$(BUILD_DIR ) /lib$(NAME ) .$(LIB_DYN_SUFFIX ) .$(VERSION ) : $(OBJS )
191
216
$(CC ) $(CFLAGS ) $(LDFLAGS ) $(LDFLAGS_SO ) $(LDLIBS ) $^ -o $@
192
217
218
+ endif
193
219
194
220
#
195
221
# Static library
@@ -203,7 +229,7 @@ $(BUILD_DIR)/lib$(NAME).$(LIB_STATIC_SUFFIX): $(OBJS)
203
229
# Application built to use shared library
204
230
#
205
231
$(APP ) : $(BUILD_DIR ) /lib$(NAME ) .$(LIB_DYN_SUFFIX ) $(APP_SRC )
206
- $(CC ) $(CFLAGS ) $(APP_SRC ) -o $@ -L$(BUILD_DIR ) -l$(NAME )
232
+ $(CC ) $(CFLAGS ) $(LDFLAGS_APP_STATIC ) $( APP_SRC ) -o $@ -L$(BUILD_DIR ) -l$(NAME )
207
233
208
234
209
235
#
0 commit comments