2
0
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:
Rene Rivera
2002-10-31 04:46:54 +00:00
parent 0691657f51
commit 7b47ebce7d
2 changed files with 64 additions and 26 deletions

View File

@@ -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 #####

View File

@@ -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 #####