Skip to content

Commit c79089b

Browse files
committed
c-lib Makefile: Add support for building using common cross-compilers
1 parent ccea584 commit c79089b

File tree

1 file changed

+29
-3
lines changed

1 file changed

+29
-3
lines changed

src/c-lib/Makefile

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,21 +104,34 @@ ifneq (, $(findstring darwin, $(ARCH)))
104104
LIB_DYN_SUFFIX = dylib
105105
LIB_STATIC_SUFFIX = a
106106
BIN_SUFFIX = bin
107+
LDLIBS = -lc
107108
LDFLAGS =
108109
LDFLAGS_SO = -shared -Wl,-install_name,lib$(NAME).$(LIB_DYN_SUFFIX).$(MAJOR)
110+
LDFLAGS_APP_STATIC =
109111
CFLAGS_FORTIFY =
110112
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
111123
else
112124
LIB_DYN_SUFFIX = so
113125
LIB_STATIC_SUFFIX = a
114126
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)
116129
LDFLAGS_SO = -shared -Wl,-soname,lib$(NAME).$(LIB_DYN_SUFFIX).$(MAJOR)
130+
LDFLAGS_APP_STATIC = -s
117131
CFLAGS_FORTIFY = -D_FORTIFY_SOURCE=2
118132
NPROC = nproc
119133
endif
120134

121-
LDLIBS = -lc
122135
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)
123136

124137
APP = $(BUILD_DIR)/$(NAME).$(BIN_SUFFIX)
@@ -127,7 +140,12 @@ APP_STATIC = $(BUILD_DIR)/$(NAME)-static.$(BIN_SUFFIX)
127140
TEST_BIN = $(BUILD_DIR)/$(NAME)-test.$(BIN_SUFFIX)
128141

129142
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
130147
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
131149

132150
PREFIX = /usr/local
133151
LIBDIR = $(PREFIX)/lib
@@ -181,6 +199,13 @@ $(BUILD_DIR)/%.o: %.c | $(BUILD_DIR)/
181199
#
182200
# Shared library
183201
#
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+
184209
$(BUILD_DIR)/lib$(NAME).$(LIB_DYN_SUFFIX): $(BUILD_DIR)/lib$(NAME).$(LIB_DYN_SUFFIX).$(VERSION) $(BUILD_DIR)/lib$(NAME).$(LIB_DYN_SUFFIX).$(MAJOR)
185210
ln -sf $(notdir $<) $@
186211

@@ -190,6 +215,7 @@ $(BUILD_DIR)/lib$(NAME).$(LIB_DYN_SUFFIX).$(MAJOR): $(BUILD_DIR)/lib$(NAME).$(LI
190215
$(BUILD_DIR)/lib$(NAME).$(LIB_DYN_SUFFIX).$(VERSION): $(OBJS)
191216
$(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SO) $(LDLIBS) $^ -o $@
192217

218+
endif
193219

194220
#
195221
# Static library
@@ -203,7 +229,7 @@ $(BUILD_DIR)/lib$(NAME).$(LIB_STATIC_SUFFIX): $(OBJS)
203229
# Application built to use shared library
204230
#
205231
$(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)
207233

208234

209235
#

0 commit comments

Comments
 (0)