2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-17 01:32:12 +00:00

Better support for dynamic libraries in MacOSX with darwin.

* darwin-tools.jam, now support creating bundles (plugins)
* darwin-tools.jam, handle multiple defs in dynamic libraries
* python.jam, create bundles instead of regular dynamic libs.


[SVN r15980]
This commit is contained in:
Rene Rivera
2002-10-25 02:15:37 +00:00
parent 245097e3c2
commit 6b681ecc98
4 changed files with 46 additions and 10 deletions

View File

@@ -11,6 +11,13 @@
# 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 ;
flags darwin CFLAGS <cflags> ;
flags darwin C++FLAGS <cxxflags> ;
flags darwin DEFINES <define> ;
@@ -25,12 +32,14 @@ flags darwin ARFLAGS <arflags> ;
flags darwin TARGET_TYPE <target-type> ;
flags darwin FRAMEWORKS <framework> ;
flags darwin DLLVERSION <dllversion> ;
flags darwin BUNDLE_LOADER <bundle-loader> ;
ARFLAGS ?= "" ;
DLLVERSION = $(DLLVERSION[1]) ;
DLLVERSION ?= $(BOOST_VERSION) ;
CFLAGS += -Wno-long-double ;
flags darwin CFLAGS : -Wno-long-double -no-cpp-precomp ;
flags darwin C++FLAGS : -fcoalesce-templates ;
flags darwin LINKFLAGS <runtime-link>static : -static-libgcc ;
flags darwin CFLAGS <debug-symbols>on : -g ;
flags darwin LINKFLAGS <debug-symbols>on : -g ;
@@ -46,9 +55,11 @@ flags darwin LINKFLAGS <profiling>on : -pg ;
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 : -fno-common ;
flags darwin LINKFLAGS <target-type>$(SHARED_TYPES) :
-nostartfiles -Wl,-dylib -Wl,-ldylib1.o -Wl,-undefined,warning -Wl,-flat_namespace ;
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 : "" ;
#### Link ####
@@ -72,7 +83,7 @@ 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) $(DLLFLAGS) -framework$(_)$(FRAMEWORKS)
c++ $(LINKFLAGS) -o "$(<[1])" -L"$(LIBPATH:T)" -L"$(STDLIBPATH:T)" "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(DLL)$(DLLFLAGS) -framework$(_)$(FRAMEWORKS) -bundle_loader$(_)"$(BUNDLE_LOADER)"
}
#### Cc #####

View File

@@ -135,6 +135,13 @@ rule select-python-library ( toolset variant : properties * )
properties += <library-file>$(lib) ;
}
}
if $(OS) = MACOSX && $(toolset) = darwin
{
properties = [ replace $(properties) : <shared-link>dynamic <shared-link>bundle ] ;
properties +=
<bundle-loader>$(PYTHON_ROOT)/bin/python$(PYTHON_VERSION)
;
}
return $(properties) ;
}

View File

@@ -11,6 +11,13 @@
# 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 ;
flags darwin CFLAGS <cflags> ;
flags darwin C++FLAGS <cxxflags> ;
flags darwin DEFINES <define> ;
@@ -25,12 +32,14 @@ flags darwin ARFLAGS <arflags> ;
flags darwin TARGET_TYPE <target-type> ;
flags darwin FRAMEWORKS <framework> ;
flags darwin DLLVERSION <dllversion> ;
flags darwin BUNDLE_LOADER <bundle-loader> ;
ARFLAGS ?= "" ;
DLLVERSION = $(DLLVERSION[1]) ;
DLLVERSION ?= $(BOOST_VERSION) ;
CFLAGS += -Wno-long-double ;
flags darwin CFLAGS : -Wno-long-double -no-cpp-precomp ;
flags darwin C++FLAGS : -fcoalesce-templates ;
flags darwin LINKFLAGS <runtime-link>static : -static-libgcc ;
flags darwin CFLAGS <debug-symbols>on : -g ;
flags darwin LINKFLAGS <debug-symbols>on : -g ;
@@ -46,9 +55,11 @@ flags darwin LINKFLAGS <profiling>on : -pg ;
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 : -fno-common ;
flags darwin LINKFLAGS <target-type>$(SHARED_TYPES) :
-nostartfiles -Wl,-dylib -Wl,-ldylib1.o -Wl,-undefined,warning -Wl,-flat_namespace ;
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 : "" ;
#### Link ####
@@ -72,7 +83,7 @@ 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) $(DLLFLAGS) -framework$(_)$(FRAMEWORKS)
c++ $(LINKFLAGS) -o "$(<[1])" -L"$(LIBPATH:T)" -L"$(STDLIBPATH:T)" "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(DLL)$(DLLFLAGS) -framework$(_)$(FRAMEWORKS) -bundle_loader$(_)"$(BUNDLE_LOADER)"
}
#### Cc #####

View File

@@ -135,6 +135,13 @@ rule select-python-library ( toolset variant : properties * )
properties += <library-file>$(lib) ;
}
}
if $(OS) = MACOSX && $(toolset) = darwin
{
properties = [ replace $(properties) : <shared-link>dynamic <shared-link>bundle ] ;
properties +=
<bundle-loader>$(PYTHON_ROOT)/bin/python$(PYTHON_VERSION)
;
}
return $(properties) ;
}