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:
@@ -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 #####
|
||||
|
||||
@@ -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) ;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 #####
|
||||
|
||||
@@ -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) ;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user