mirror of
https://github.com/boostorg/build.git
synced 2026-02-17 13:42:14 +00:00
Reinstate double-link generation of dynamic libraries.
Simplify slightly. Use with Python 2.3 frameworks mostly working. [SVN r16026]
This commit is contained in:
@@ -11,10 +11,6 @@
|
||||
# For adding framwork libraries; like <framework>Python, <framework>Carbon, etc.
|
||||
free-feature framework ;
|
||||
|
||||
# For indicating wether to create a bundle instead of a shared library when
|
||||
# linking a DLL target.
|
||||
feature shared-link : dynamic bundle ;
|
||||
|
||||
# Specify the loader for bundles.
|
||||
free-feature bundle-loader ;
|
||||
|
||||
@@ -56,10 +52,16 @@ flags darwin C++FLAGS <rtti>off : -fno-rtti ;
|
||||
flags darwin C++FLAGS <vtable-thunks>on : -fvtable-thunks ;
|
||||
flags darwin C++FLAGS <vtable-thunks>off : -fvtable-thunks=0 ;
|
||||
flags darwin CFLAGS <shared-linkable>true : -fPIC ;
|
||||
flags darwin LINKFLAGS <target-type>$(SHARED_TYPES) : -Wl,-m -Wl,-prebind ;
|
||||
flags darwin LINKFLAGS <target-type>$(SHARED_TYPES)/<shared-link>dynamic : -Wl,-dynamic -nostartfiles -Wl,-dylib -Wl,-ldylib1.o ;
|
||||
flags darwin LINKFLAGS <target-type>$(SHARED_TYPES)/<shared-link>bundle : -bundle ;
|
||||
flags darwin DLL <target-type>$(SHARED_TYPES)/<shared-link>dynamic : "" ;
|
||||
if $(BUNDLE_LOADER)
|
||||
{
|
||||
flags darwin LINKFLAGS <target-type>$(SHARED_TYPES) :
|
||||
-bundle ;
|
||||
}
|
||||
else
|
||||
{
|
||||
flags darwin LINKFLAGS <target-type>$(SHARED_TYPES) :
|
||||
-Wl,-dynamic -nostartfiles -Wl,-dylib -Wl,-ldylib1.o ;
|
||||
}
|
||||
|
||||
|
||||
#### Link ####
|
||||
@@ -67,23 +69,40 @@ flags darwin DLL <target-type>$(SHARED_TYPES)/<shared-link>dynamic : "" ;
|
||||
rule Link-action
|
||||
{
|
||||
_ on $(<) = " " ;
|
||||
if $(DLLVERSION) && $(TARGET_TYPE) in $(SHARED_TYPES)
|
||||
DEPENDS $(<) : $(NEEDLIBS) $(NEEDIMPS) ;
|
||||
if $(DLLVERSION) && $(TARGET_TYPE) in $(SHARED_TYPES) && ! $(BUNDLE_LOADER)
|
||||
{
|
||||
DLLFLAGS on $(<) = "-Wl,-dylib_compatibility_version,$(DLLVERSION) -W,l-dylib_current_version,$(DLLVERSION)" ;
|
||||
DLLFLAGS on $(<) =
|
||||
"-Wl,-dylib_compatibility_version,$(DLLVERSION) -W,l-dylib_current_version,$(DLLVERSION)" ;
|
||||
darwin-Link-DyLib-action $(<) : $(>) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
DLLFLAGS on $(<) = ;
|
||||
darwin-Link-action $(<) : $(>) ;
|
||||
}
|
||||
DEPENDS $(<) : $(NEEDLIBS) $(NEEDIMPS) ;
|
||||
darwin-Link-action $(<) : $(>) ;
|
||||
}
|
||||
|
||||
actions darwin-Link-action bind NEEDLIBS NEEDIMPS
|
||||
{
|
||||
$(SHELL_SET)$(gSHELL_LIBPATH)=$(RUN_LD_LIBRARY_PATH)
|
||||
$(SHELL_EXPORT)$(gSHELL_LIBPATH)
|
||||
c++ $(LINKFLAGS) -o "$(<[1])" -L"$(LIBPATH:T)" -L"$(STDLIBPATH:T)" "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(DLL)$(DLLFLAGS) -framework$(_)$(FRAMEWORKS) -bundle_loader$(_)"$(BUNDLE_LOADER)"
|
||||
c++ $(LINKFLAGS) -o "$(<[1])" "$(>)" \
|
||||
-L"$(LIBPATH:T)" -L"$(STDLIBPATH:T)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) \
|
||||
-framework$(_)$(FRAMEWORKS) -bundle_loader$(_)"$(BUNDLE_LOADER)"
|
||||
}
|
||||
|
||||
actions darwin-Link-DyLib-action bind NEEDLIBS NEEDIMPS
|
||||
{
|
||||
$(SHELL_SET)$(gSHELL_LIBPATH)=$(RUN_LD_LIBRARY_PATH)
|
||||
$(SHELL_EXPORT)$(gSHELL_LIBPATH)
|
||||
ld -dynamic -m -r -d -o "$(<[1]:S=.lo)" "$(>)" \
|
||||
&& \
|
||||
c++ $(LINKFLAGS) $(DLLFLAGS) -o "$(<[1])" "$(<[1]:S=.lo)" \
|
||||
-L"$(LIBPATH:T)" -L"$(STDLIBPATH:T)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) \
|
||||
-framework$(_)$(FRAMEWORKS) \
|
||||
&& \
|
||||
rm -f "$(<[1]:S=.lo)"
|
||||
}
|
||||
|
||||
#### Cc #####
|
||||
|
||||
@@ -11,10 +11,6 @@
|
||||
# For adding framwork libraries; like <framework>Python, <framework>Carbon, etc.
|
||||
free-feature framework ;
|
||||
|
||||
# For indicating wether to create a bundle instead of a shared library when
|
||||
# linking a DLL target.
|
||||
feature shared-link : dynamic bundle ;
|
||||
|
||||
# Specify the loader for bundles.
|
||||
free-feature bundle-loader ;
|
||||
|
||||
@@ -56,10 +52,16 @@ flags darwin C++FLAGS <rtti>off : -fno-rtti ;
|
||||
flags darwin C++FLAGS <vtable-thunks>on : -fvtable-thunks ;
|
||||
flags darwin C++FLAGS <vtable-thunks>off : -fvtable-thunks=0 ;
|
||||
flags darwin CFLAGS <shared-linkable>true : -fPIC ;
|
||||
flags darwin LINKFLAGS <target-type>$(SHARED_TYPES) : -Wl,-m -Wl,-prebind ;
|
||||
flags darwin LINKFLAGS <target-type>$(SHARED_TYPES)/<shared-link>dynamic : -Wl,-dynamic -nostartfiles -Wl,-dylib -Wl,-ldylib1.o ;
|
||||
flags darwin LINKFLAGS <target-type>$(SHARED_TYPES)/<shared-link>bundle : -bundle ;
|
||||
flags darwin DLL <target-type>$(SHARED_TYPES)/<shared-link>dynamic : "" ;
|
||||
if $(BUNDLE_LOADER)
|
||||
{
|
||||
flags darwin LINKFLAGS <target-type>$(SHARED_TYPES) :
|
||||
-bundle ;
|
||||
}
|
||||
else
|
||||
{
|
||||
flags darwin LINKFLAGS <target-type>$(SHARED_TYPES) :
|
||||
-Wl,-dynamic -nostartfiles -Wl,-dylib -Wl,-ldylib1.o ;
|
||||
}
|
||||
|
||||
|
||||
#### Link ####
|
||||
@@ -67,23 +69,40 @@ flags darwin DLL <target-type>$(SHARED_TYPES)/<shared-link>dynamic : "" ;
|
||||
rule Link-action
|
||||
{
|
||||
_ on $(<) = " " ;
|
||||
if $(DLLVERSION) && $(TARGET_TYPE) in $(SHARED_TYPES)
|
||||
DEPENDS $(<) : $(NEEDLIBS) $(NEEDIMPS) ;
|
||||
if $(DLLVERSION) && $(TARGET_TYPE) in $(SHARED_TYPES) && ! $(BUNDLE_LOADER)
|
||||
{
|
||||
DLLFLAGS on $(<) = "-Wl,-dylib_compatibility_version,$(DLLVERSION) -W,l-dylib_current_version,$(DLLVERSION)" ;
|
||||
DLLFLAGS on $(<) =
|
||||
"-Wl,-dylib_compatibility_version,$(DLLVERSION) -W,l-dylib_current_version,$(DLLVERSION)" ;
|
||||
darwin-Link-DyLib-action $(<) : $(>) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
DLLFLAGS on $(<) = ;
|
||||
darwin-Link-action $(<) : $(>) ;
|
||||
}
|
||||
DEPENDS $(<) : $(NEEDLIBS) $(NEEDIMPS) ;
|
||||
darwin-Link-action $(<) : $(>) ;
|
||||
}
|
||||
|
||||
actions darwin-Link-action bind NEEDLIBS NEEDIMPS
|
||||
{
|
||||
$(SHELL_SET)$(gSHELL_LIBPATH)=$(RUN_LD_LIBRARY_PATH)
|
||||
$(SHELL_EXPORT)$(gSHELL_LIBPATH)
|
||||
c++ $(LINKFLAGS) -o "$(<[1])" -L"$(LIBPATH:T)" -L"$(STDLIBPATH:T)" "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(DLL)$(DLLFLAGS) -framework$(_)$(FRAMEWORKS) -bundle_loader$(_)"$(BUNDLE_LOADER)"
|
||||
c++ $(LINKFLAGS) -o "$(<[1])" "$(>)" \
|
||||
-L"$(LIBPATH:T)" -L"$(STDLIBPATH:T)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) \
|
||||
-framework$(_)$(FRAMEWORKS) -bundle_loader$(_)"$(BUNDLE_LOADER)"
|
||||
}
|
||||
|
||||
actions darwin-Link-DyLib-action bind NEEDLIBS NEEDIMPS
|
||||
{
|
||||
$(SHELL_SET)$(gSHELL_LIBPATH)=$(RUN_LD_LIBRARY_PATH)
|
||||
$(SHELL_EXPORT)$(gSHELL_LIBPATH)
|
||||
ld -dynamic -m -r -d -o "$(<[1]:S=.lo)" "$(>)" \
|
||||
&& \
|
||||
c++ $(LINKFLAGS) $(DLLFLAGS) -o "$(<[1])" "$(<[1]:S=.lo)" \
|
||||
-L"$(LIBPATH:T)" -L"$(STDLIBPATH:T)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) \
|
||||
-framework$(_)$(FRAMEWORKS) \
|
||||
&& \
|
||||
rm -f "$(<[1]:S=.lo)"
|
||||
}
|
||||
|
||||
#### Cc #####
|
||||
|
||||
Reference in New Issue
Block a user