1
0
mirror of synced 2026-04-10 14:39:01 +00:00

Add dynamic linking support

The original static linking works on distributions like Ubuntu that provide static libraries, but it would fail on some distributions like Arch Linux that primarily provide dynamic libraries.

This commit adds dynamic linking support to accommodate these distributions.

Usage:

```
make LINK_TYPE=dynamic build
```
This commit is contained in:
Vulcan
2025-01-31 12:46:06 +05:30
committed by GitHub
parent ebba0c1900
commit dc7deefc00

View File

@@ -141,7 +141,12 @@ INC_DIRS += $(DEP_INC_DIRS) $(EXTRA_INC)
DEFINES += _FILE_OFFSET_BITS=64
ifndef LINK_TYPE
LINK_TYPE=static
endif
# $(if ("$(SYSTEM)","cygwin"), $(1), :lib$(strip $(1)).a)
ifeq ($(LINK_TYPE),static)
define static_lib
:lib$(strip $(1)).a
endef
@@ -155,6 +160,13 @@ define static_lib
:lib$(strip $(1))-mt.a
endef
endif
else ifeq ($(LINK_TYPE),dynamic)
define static_lib
$(1)
endef
else
$(error LINK_TYPE must be either 'static' or 'dynamic', not '$(LINK_TYPE)')
endif
#################################################################################
### Setting up some common libraries
@@ -181,9 +193,11 @@ COMMON_LIBS += Bcrypt
endif
ifeq ($(SYSTEM),linux)
NCURSES_LIBS += $(call static_lib, ncurses)
NCURSES_LIBS += $(call static_lib, panel)
ifeq ($(LINK_TYPE),static)
NCURSES_LIBS += $(call static_lib, termcap)
NCURSES_LIBS += $(call static_lib, gpm)
NCURSES_LIBS += $(call static_lib, panel)
endif
BOOST_LIBS += $(call static_lib, rt)
COMMON_LIBS += pthread
endif