mirror of
https://github.com/boostorg/build.git
synced 2026-02-15 00:52:16 +00:00
fixed a unix-only shared library dependency problem
cleaned up an NT-only warning [SVN r11768]
This commit is contained in:
@@ -43,8 +43,12 @@ flags gcc HDRS <include> ;
|
||||
flags gcc STDHDRS : $(GCC_INCLUDE_DIRECTORY) ;
|
||||
flags gcc STDLIBPATH : $(GCC_STDLIB_DIRECTORY) ;
|
||||
|
||||
flags gcc CFLAGS <shared-linkable>true : -fPIC ;
|
||||
flags gcc LINKFLAGS <shared-linkable>true : -fPIC ;
|
||||
if ! $(NT) # The compiler complains about -fPIC on NT
|
||||
{
|
||||
flags gcc CFLAGS <shared-linkable>true : -fPIC ;
|
||||
flags gcc LINKFLAGS <shared-linkable>true : -fPIC ;
|
||||
}
|
||||
|
||||
|
||||
if $(BETOOLS)
|
||||
{
|
||||
@@ -67,21 +71,15 @@ rule Link-action
|
||||
# will be "multiplied away" otherwise. The --exclude-symbols directive
|
||||
# proved to be neccessary with some versions of Cygwin.
|
||||
IMPLIB_COMMAND on $(<) = "-Wl,--exclude-symbols,_bss_end__:_bss_start__:_data_end__:_data_start__ -Wl,--out-implib," ;
|
||||
# IMPLIB_COMMAND on $(<) = "-Wl,--out-implib," ;
|
||||
gcc-Link-action $(<) : $(>) ;
|
||||
}
|
||||
|
||||
# for gcc, we repeat all libraries so that dependencies are always resolved
|
||||
actions gcc-Link-action bind NEEDLIBS
|
||||
{
|
||||
$(GCC_BIN_DIRECTORY)g++ $(IMPLIB_COMMAND)$(<[2]) $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS)
|
||||
$(GCC_BIN_DIRECTORY)g++ $(IMPLIB_COMMAND)$(<[2]) $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) -Wl,-rpath-link,.
|
||||
}
|
||||
|
||||
# older actions
|
||||
# $(GCC_BIN_DIRECTORY)dlltool -e $(<[1]:S=:D=:G=) -l "$(<[2])" "$(>)"
|
||||
# $(GCC_BIN_DIRECTORY)g++ $(LINKFLAGS) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -o "$(<[1])"
|
||||
|
||||
|
||||
#### Cc #####
|
||||
|
||||
rule Cc-action
|
||||
|
||||
@@ -43,8 +43,12 @@ flags gcc HDRS <include> ;
|
||||
flags gcc STDHDRS : $(GCC_INCLUDE_DIRECTORY) ;
|
||||
flags gcc STDLIBPATH : $(GCC_STDLIB_DIRECTORY) ;
|
||||
|
||||
flags gcc CFLAGS <shared-linkable>true : -fPIC ;
|
||||
flags gcc LINKFLAGS <shared-linkable>true : -fPIC ;
|
||||
if ! $(NT) # The compiler complains about -fPIC on NT
|
||||
{
|
||||
flags gcc CFLAGS <shared-linkable>true : -fPIC ;
|
||||
flags gcc LINKFLAGS <shared-linkable>true : -fPIC ;
|
||||
}
|
||||
|
||||
|
||||
if $(BETOOLS)
|
||||
{
|
||||
@@ -67,21 +71,15 @@ rule Link-action
|
||||
# will be "multiplied away" otherwise. The --exclude-symbols directive
|
||||
# proved to be neccessary with some versions of Cygwin.
|
||||
IMPLIB_COMMAND on $(<) = "-Wl,--exclude-symbols,_bss_end__:_bss_start__:_data_end__:_data_start__ -Wl,--out-implib," ;
|
||||
# IMPLIB_COMMAND on $(<) = "-Wl,--out-implib," ;
|
||||
gcc-Link-action $(<) : $(>) ;
|
||||
}
|
||||
|
||||
# for gcc, we repeat all libraries so that dependencies are always resolved
|
||||
actions gcc-Link-action bind NEEDLIBS
|
||||
{
|
||||
$(GCC_BIN_DIRECTORY)g++ $(IMPLIB_COMMAND)$(<[2]) $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS)
|
||||
$(GCC_BIN_DIRECTORY)g++ $(IMPLIB_COMMAND)$(<[2]) $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) -Wl,-rpath-link,.
|
||||
}
|
||||
|
||||
# older actions
|
||||
# $(GCC_BIN_DIRECTORY)dlltool -e $(<[1]:S=:D=:G=) -l "$(<[2])" "$(>)"
|
||||
# $(GCC_BIN_DIRECTORY)g++ $(LINKFLAGS) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -o "$(<[1])"
|
||||
|
||||
|
||||
#### Cc #####
|
||||
|
||||
rule Cc-action
|
||||
|
||||
Reference in New Issue
Block a user