removed duplicated linked libraries for darwin

This commit is contained in:
Antonio Linares
2025-10-04 08:54:21 +02:00
parent d677cbb1e9
commit a868adf053
2 changed files with 41 additions and 2 deletions

View File

@@ -53,6 +53,22 @@ ifeq ($(BUILD_SHARED),yes)
HB_LIBS_TPL := HB_LIBS_TPL :=
else else
# (have to use '=' operator here) # (have to use '=' operator here)
ifeq ($(HB_PLATFORM),darwin)
# On macOS, ld warns about duplicate libraries and can handle circular deps without duplicates
HB_LIBS_TPL = \
hbextern \
hbdebug \
$(_HB_VM) \
hbrtl \
hblang \
hbcpage \
$(HB_GT_LIBS) \
$(_HB_RDD) \
hbmacro \
hbcplr \
hbpp \
hbcommon
else
HB_LIBS_TPL = \ HB_LIBS_TPL = \
hbextern \ hbextern \
hbdebug \ hbdebug \
@@ -68,6 +84,7 @@ else
hbcplr \ hbcplr \
hbpp \ hbpp \
hbcommon hbcommon
endif
ifneq ($(HB_HAS_PCRE_LOCAL),) ifneq ($(HB_HAS_PCRE_LOCAL),)
HB_LIBS_TPL += hbpcre HB_LIBS_TPL += hbpcre

View File

@@ -1843,6 +1843,17 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit
hbmk[ _HBMK_cCCEXT ] := ".exe" hbmk[ _HBMK_cCCEXT ] := ".exe"
#endif #endif
/* Apply platform-specific library fixes */
IF hbmk[ _HBMK_cPLAT ] == "darwin"
/* On macOS, remove duplicate 'hbrdd' since ld warns about duplicate libraries and doesn't support lib grouping */
IF hbmk[ _HBMK_nHBMODE ] == _HBMODE_HB10
aLIB_BASE_RDD := { "hbrdd", "hbusrrdd", "rddntx", "rddcdx", "rddfpt", "hbhsx", "hbsix" }
ELSE
aLIB_BASE_RDD := { "hbrdd", "hbuddall", "hbusrrdd", "rddntx", "rddcdx", "rddnsx", "rddfpt", "hbhsx", "hbsix" }
ENDIF
aLIB_BASE_RDD_MT := aLIB_BASE_RDD
ENDIF
/* Setup platform dependent data */ /* Setup platform dependent data */
cBin_CompPRG := "harbour" + l_cHBSUFFIX cBin_CompPRG := "harbour" + l_cHBSUFFIX
@@ -4180,7 +4191,12 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit
ELSE ELSE
AAdd( hbmk[ _HBMK_aOPTL ], "{LL} {LB} {LF}" ) AAdd( hbmk[ _HBMK_aOPTL ], "{LL} {LB} {LF}" )
AAdd( hbmk[ _HBMK_aOPTD ], "{LL} {LB} {LF}" ) AAdd( hbmk[ _HBMK_aOPTD ], "{LL} {LB} {LF}" )
l_aLIBHBBASE_2 := iif( hbmk[ _HBMK_lMT ], aLIB_BASE_2_MT, aLIB_BASE_2 ) IF hbmk[ _HBMK_cPLAT ] == "darwin"
/* On macOS, ld can handle circular dependencies without duplicates and warns about duplicate libraries */
l_aLIBHBBASE_2 := {}
ELSE
l_aLIBHBBASE_2 := iif( hbmk[ _HBMK_lMT ], aLIB_BASE_2_MT, aLIB_BASE_2 )
ENDIF
ENDIF ENDIF
IF hbmk[ _HBMK_cPLAT ] == "darwin" IF hbmk[ _HBMK_cPLAT ] == "darwin"
/* Leave space for later modifying .dylib paths using `install_name_tool`. /* Leave space for later modifying .dylib paths using `install_name_tool`.
@@ -4549,7 +4565,13 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit
ELSE ELSE
AAdd( hbmk[ _HBMK_aOPTL ], "{LL} {LB} {LF}" ) AAdd( hbmk[ _HBMK_aOPTL ], "{LL} {LB} {LF}" )
AAdd( hbmk[ _HBMK_aOPTD ], "{LL} {LB} {LF}" ) AAdd( hbmk[ _HBMK_aOPTD ], "{LL} {LB} {LF}" )
l_aLIBHBBASE_2 := iif( hbmk[ _HBMK_lMT ], aLIB_BASE_2_MT, aLIB_BASE_2 ) IF hbmk[ _HBMK_cPLAT ] == "darwin"
/* On macOS, ld warns about duplicate libraries, so we skip the duplicate base libs
since macOS ld can handle circular dependencies without explicit grouping */
l_aLIBHBBASE_2 := {}
ELSE
l_aLIBHBBASE_2 := iif( hbmk[ _HBMK_lMT ], aLIB_BASE_2_MT, aLIB_BASE_2 )
ENDIF
ENDIF ENDIF
IF hbmk[ _HBMK_lSTRIP ] IF hbmk[ _HBMK_lSTRIP ]
IF hbmk[ _HBMK_lCreateLib ] IF hbmk[ _HBMK_lCreateLib ]