mirror of
https://github.com/edeproject/ede.git
synced 2023-08-10 21:13:03 +03:00
5155215b68
Changed SharedLibrary rule so it can generate .la files, like libtool Added some bluring of preview image, although it pretty sucks emountd will now use global HAL flags and libraries
149 lines
3.4 KiB
Plaintext
149 lines
3.4 KiB
Plaintext
#
|
|
# $Id$
|
|
#
|
|
# Part of Equinox Desktop Environment (EDE).
|
|
# Copyright (c) 2000-2007 EDE Authors.
|
|
#
|
|
# This program is licensed under terms of the
|
|
# GNU General Public License version 2 or newer.
|
|
# See COPYING for details.
|
|
|
|
SUFOBJ_SHARED = ".lo" ;
|
|
SUFLIB_SHARED = ".so" ;
|
|
SUFLA_SHARED = ".la" ;
|
|
|
|
# StaticLibrary [lib-name] : [source-files] ;
|
|
rule StaticLibrary
|
|
{
|
|
Library $(<) : $(>) ;
|
|
}
|
|
|
|
rule SharedLibraryFromObjects
|
|
{
|
|
local _i _l _l_so _l_la _s ;
|
|
|
|
# Add grist to file names
|
|
_s = [ FGristFiles $(3) ] ;
|
|
_l = $(1:S=$(SUFLIB_SHARED).$(2)) ;
|
|
|
|
# for sonames; it accept only libname.so
|
|
_l_so = $(1:S=$(SUFLIB_SHARED)) ;
|
|
_l_so = $(_l_so:BSR=) ;
|
|
|
|
# libname.la file
|
|
_l_la = $(_l_so:S=$(SUFLA_SHARED)) ;
|
|
|
|
# library depends on its member objects
|
|
if $(KEEPOBJS) {
|
|
LocalDepends obj : $(_s) ;
|
|
} else {
|
|
LocalDepends lib : $(_l) ;
|
|
}
|
|
|
|
# Set LOCATE for the library and its contents. The bound
|
|
# value shows up as $(NEEDLIBS) on the Link actions.
|
|
# For compatibility, we only do this if the library doesn't
|
|
# already have a path.
|
|
|
|
if ! $(_l:D) {
|
|
MakeLocate $(_l) : $(LOCATE_TARGET) ;
|
|
}
|
|
|
|
# we never scan shared libraries for member objects
|
|
LocalDepends $(_l) : $(_s) ;
|
|
|
|
# clean library
|
|
LocalClean clean : $(_l) ;
|
|
|
|
if $(OS) = "SOLARIS" {
|
|
# solaris have other options for soname creation
|
|
LINKFLAGS on $(_l) = -h $(_l_so) -G [ on $(_l) return $(LINKFLAGS) ] ;
|
|
} else {
|
|
# let linker knows we are making shared library by adding -shared and -Wl,-soname libname.so flags
|
|
LINKFLAGS on $(_l) = -Wl,-soname,$(_l_so) -shared [ on $(_l) return $(LINKFLAGS) ] ;
|
|
}
|
|
|
|
# make it
|
|
Link $(_l) : $(_s) ;
|
|
|
|
# make a link
|
|
SymLink $(_l_so) : $(_l) ;
|
|
|
|
# let link be created in directory where libname.so.X.X.X exists
|
|
MakeLocate $(_l_so) : $(_l:D) ;
|
|
LocalDepends lib : $(_l_so) ;
|
|
|
|
# generate libname.la file
|
|
DLNAME1 on $(_l_la) = $(_l_so) ;
|
|
DLNAME2 on $(_l_la) = $(_l:BSR=) ;
|
|
GenLa $(_l_la) ;
|
|
LocalClean clean : $(_l_la) ;
|
|
LocalClean clean : $(_l_so) ;
|
|
|
|
# let libname.la be created in directory where libname.so.X.X.X exists
|
|
MakeLocate $(_l_la) : $(_l:D) ;
|
|
LocalDepends lib : $(_l_la) ;
|
|
}
|
|
|
|
rule SharedObjects
|
|
{
|
|
# temporary replace SUFOBJ since Objects rule use it
|
|
local SUFOBJ = $(SUFOBJ_SHARED) ;
|
|
|
|
ObjectCcFlags $(<) : -fPIC ;
|
|
ObjectC++Flags $(<) : -fPIC ;
|
|
|
|
# call the normal Objects rule
|
|
Objects $(<) ;
|
|
}
|
|
|
|
# SharedLibrary [library] : [version] : [source] ;
|
|
# Creates shared library ala libtool
|
|
rule SharedLibrary
|
|
{
|
|
if ! $(UNIX) {
|
|
Exit "Don't know how to build shared libraries on this platform" ;
|
|
}
|
|
|
|
SharedLibraryFromObjects $(1) : $(2) : $(3:S=$(SUFOBJ_SHARED)) ;
|
|
SharedObjects $(3) ;
|
|
}
|
|
|
|
# .la files are generated by libtool and we emulate that too
|
|
# NOTE: jam will discard comments that should be written to the file
|
|
# so instead plain '#' is used '@@#' and later is replaced with sed
|
|
actions GenLa
|
|
{
|
|
today=`date`
|
|
|
|
cat > "$(<).tmp" <<EOF
|
|
@@# $(<:D=) - a libtool library file
|
|
@@# Generated by 'EDE jam build' on: $today
|
|
|
|
@@# The name that we can dlopen(3).
|
|
dlname='$(DLNAME1)'
|
|
|
|
@@# Names of this library.
|
|
library_names='$(DLNAME2) $(DLNAME1)'
|
|
|
|
@@# The name of the static archive.
|
|
old_library=''
|
|
|
|
@@# Libraries that this one depends upon.
|
|
dependency_libs=''
|
|
|
|
@@# Is this already installed library.
|
|
installed=yes
|
|
|
|
@@# Files to dlopen/dlpreopen.
|
|
dlopen=''
|
|
dlpreopen=''
|
|
|
|
@@# Directory that this library needs to be installed in:
|
|
libdir='$(libdir)'
|
|
EOF
|
|
|
|
cat "$(<).tmp" | $(SED) 's/^@@#/#/g' > "$(<)"
|
|
$(RM) "$(<).tmp"
|
|
}
|