1
0
mirror of https://github.com/samba-team/samba.git synced 2025-10-31 12:23:52 +03:00

r14327: Replace MAJOR_VERSION/MINOR_VERSION/RELEASE_VERSION with two parameters:

- VERSION: should contain the current version. Will be made part of the filename.
 - SO_VERSION: should contain the latest version that this on is compatible to. Will be used for setting the soname of the shared library.

Fix sonames and use them on platforms that support them
Remove symlinking code. ldconfig will take care of creating the symlinks now
that we set the soname.
This commit is contained in:
Jelmer Vernooij
2006-03-13 16:32:44 +00:00
committed by Gerald (Jerry) Carter
parent 7fd74cfbb9
commit 7871b07e21
25 changed files with 258 additions and 407 deletions

View File

@@ -1,10 +1,9 @@
#################################
# Start SUBSYSTEM gensec
[LIBRARY::gensec]
MAJOR_VERSION = 0
MINOR_VERSION = 0
VERSION = 0.0.1
SO_VERSION = 0.0.1
DESCRIPTION = Generic Security Library
RELEASE_VERSION = 1
PUBLIC_HEADERS = gensec.h
PRIVATE_PROTO_HEADER = gensec_proto.h
OBJ_FILES = gensec.o

View File

@@ -1,5 +1,4 @@
- subdir handler for install headers into a specific directory
- sonames
- hack for loading modules locally
- create
- saner names for some of the .pc files

View File

@@ -71,9 +71,8 @@ my $section_types = {
"EXTRA_CFLAGS" => "string"
},
"LIBRARY" => {
"MAJOR_VERSION" => "string",
"MINOR_VERSION" => "string",
"RELEASE_VERSION" => "string",
"VERSION" => "string",
"SO_VERSION" => "string",
"INIT_FUNCTION_TYPE" => "string",

View File

@@ -88,8 +88,13 @@ sub check_library($$$)
$lib->{OUTPUT_TYPE} = $default_ot;
unless (defined($lib->{MAJOR_VERSION})) {
print "$lib->{NAME}: Please specify MAJOR_VERSION\n";
if (defined($lib->{VERSION}) and not defined($lib->{SO_VERSION})) {
print "$lib->{NAME}: Please specify SO_VERSION when specifying VERSION\n";
return;
}
if (defined($lib->{SO_VERSION}) and not defined($lib->{VERSION})) {
print "$lib->{NAME}: Please specify VERSION when specifying SO_VERSION\n";
return;
}

View File

@@ -67,7 +67,7 @@ foreach my $key (values %$OUTPUT) {
$mkenv->ObjList($key) if $key->{OUTPUT_TYPE} eq "OBJLIST";
$mkenv->StaticLibrary($key) if $key->{OUTPUT_TYPE} eq "STATIC_LIBRARY";
$mkenv->PkgConfig($key) if ($key->{OUTPUT_TYPE} eq "SHARED_LIBRARY") and
defined($key->{MAJOR_VERSION});
defined($key->{VERSION});
$mkenv->SharedLibrary($key) if $key->{OUTPUT_TYPE} eq "SHARED_LIBRARY";
$mkenv->Binary($key) if $key->{OUTPUT_TYPE} eq "BINARY";
$mkenv->Manpage($key) if defined($key->{MANPAGE});

View File

@@ -131,7 +131,6 @@ STLD_FLAGS=-rc -L\$(builddir)/bin
SHLD=$self->{config}->{CC}
SHLD_FLAGS=$self->{config}->{LDSHFLAGS} -L\$(builddir)/bin
SONAMEFLAG=$self->{config}->{SONAMEFLAG}
SHLIBEXT=$self->{config}->{SHLIBEXT}
XSLTPROC=$self->{config}->{XSLTPROC}
@@ -258,6 +257,12 @@ __EOD__
$init_obj = "bin/$ctx->{NAME}_init_module.o";
}
my $soarg = "";
if ($self->{config}->{SONAMEFLAG} ne "" and
defined($ctx->{LIBRARY_SONAME})) {
$soarg = "$self->{config}->{SONAMEFLAG}$ctx->{LIBRARY_SONAME} ";
}
if ($self->{duplicate_build}) {
$self->output(<< "__EOD__"
#
@@ -265,25 +270,11 @@ __EOD__
bin/$ctx->{LIBRARY_REALNAME}: \$($ctx->{TYPE}_$ctx->{NAME}_DEPEND_LIST) \$($ctx->{TYPE}_$ctx->{NAME}_OBJ_LIST) $init_obj
\@echo Linking \$\@
\@\$(SHLD) \$(SHLD_FLAGS) -o \$\@ \$(LOCAL_LINK_FLAGS) \\
\$($ctx->{TYPE}_$ctx->{NAME}_LINK_FLAGS) \\
\$($ctx->{TYPE}_$ctx->{NAME}_LINK_FLAGS) $soarg \\
$init_obj \$($ctx->{TYPE}_$ctx->{NAME}_LINK_LIST)
__EOD__
);
if (defined($ctx->{LIBRARY_SONAME})) {
$self->output(<< "__EOD__"
# Symlink $ctx->{LIBRARY_SONAME}
bin/$ctx->{LIBRARY_SONAME}: bin/$ctx->{LIBRARY_REALNAME}
\@echo Symlink \$\@
\@ln -sf $ctx->{LIBRARY_REALNAME} \$\@
# Symlink $ctx->{LIBRARY_NAME}
bin/$ctx->{LIBRARY_NAME}: bin/$ctx->{LIBRARY_SONAME}
\@echo Symlink \$\@
\@ln -sf $ctx->{LIBRARY_SONAME} \$\@
__EOD__
);
}
}
$self->output(<< "__EOD__"
@@ -292,25 +283,11 @@ __EOD__
$installdir/$ctx->{LIBRARY_REALNAME}: \$($ctx->{TYPE}_$ctx->{NAME}_DEPEND_LIST) \$($ctx->{TYPE}_$ctx->{NAME}_OBJ_LIST) $init_obj
\@echo Linking \$\@
\@\$(SHLD) \$(SHLD_FLAGS) -o \$\@ \\
\$($ctx->{TYPE}_$ctx->{NAME}_LINK_FLAGS) \\
\$($ctx->{TYPE}_$ctx->{NAME}_LINK_FLAGS) $soarg \\
$init_obj \$($ctx->{TYPE}_$ctx->{NAME}_LINK_LIST)
__EOD__
);
if (defined($ctx->{LIBRARY_SONAME})) {
$self->output(<< "__EOD__"
# Symlink $ctx->{LIBRARY_SONAME}
$installdir/$ctx->{LIBRARY_SONAME}: $installdir/$ctx->{LIBRARY_REALNAME}
\@echo Symlink \$\@
\@ln -sf $ctx->{LIBRARY_REALNAME} \$\@
# Symlink $ctx->{LIBRARY_NAME}
$installdir/$ctx->{LIBRARY_NAME}: $installdir/$ctx->{LIBRARY_SONAME}
\@echo Symlink \$\@
\@ln -sf $ctx->{LIBRARY_SONAME} \$\@
__EOD__
);
}
}
sub MergedObj($$)
@@ -486,7 +463,7 @@ sub PkgConfig($$)
$link_name,
$ctx->{OUTPUT},
"",
"$ctx->{MAJOR_VERSION}.$ctx->{MINOR_VERSION}.$ctx->{RELEASE_VERSION}",
"$ctx->{VERSION}",
$ctx->{DESCRIPTION}
);
}

View File

@@ -56,17 +56,15 @@ sub generate_shared_library($)
$link_name =~ s/^LIB//;
$link_name = lc($link_name);
$lib_name = "lib$link_name";
$lib->{OUTPUT} = "-l$link_name";
}
$lib->{LIBRARY_REALNAME} = $lib->{LIBRARY_NAME} = "$lib_name.\$(SHLIBEXT)";
$lib->{TARGET} = "bin/$lib->{LIBRARY_NAME}";
if (defined($lib->{MAJOR_VERSION})) {
$lib->{LIBRARY_SONAME} = $lib->{LIBRARY_NAME}.".$lib->{MAJOR_VERSION}";
$lib->{LIBRARY_REALNAME} = $lib->{LIBRARY_SONAME}.".$lib->{MINOR_VERSION}.$lib->{RELEASE_VERSION}";
$lib->{TARGET} = "bin/$lib->{LIBRARY_REALNAME}";
@{$lib->{LINK_FLAGS}} = ("\$(SONAMEFLAG)$lib->{LIBRARY_SONAME}");
if (defined($lib->{VERSION})) {
$lib->{LIBRARY_SONAME} = $lib->{LIBRARY_NAME}.".$lib->{SO_VERSION}";
$lib->{LIBRARY_REALNAME} = $lib->{LIBRARY_NAME}.".$lib->{VERSION}";
}
$lib->{TARGET} = "bin/$lib->{LIBRARY_REALNAME}";
$lib->{OUTPUT} = $lib->{TARGET};
}
sub generate_static_library($)
@@ -143,11 +141,7 @@ sub create_output($$)
push(@{$part->{LINK_LIST}}, $elem->{OUTPUT}) if defined($elem->{OUTPUT});
push(@{$part->{LINK_FLAGS}}, @{$elem->{LIBS}}) if defined($elem->{LIBS});
push(@{$part->{LINK_FLAGS}},@{$elem->{LDFLAGS}}) if defined($elem->{LDFLAGS});
if (defined($elem->{OUTPUT_TYPE}) and ($elem->{OUTPUT_TYPE} eq "SHARED_LIBRARY")) {
push(@{$part->{DEPEND_LIST}}, "bin/$elem->{LIBRARY_NAME}");
} else {
push(@{$part->{DEPEND_LIST}}, $elem->{TARGET}) if defined($elem->{TARGET});
}
push(@{$part->{DEPEND_LIST}}, $elem->{TARGET}) if defined($elem->{TARGET});
push(@{$part->{SUBSYSTEM_INIT_FUNCTIONS}}, $elem->{INIT_FUNCTION}) if
defined($elem->{INIT_FUNCTION}) and
$elem->{TYPE} ne "MODULE" and

View File

@@ -1,10 +1,9 @@
# LIB GTK SMB subsystem
[LIBRARY::GTK_SAMBA]
MAJOR_VERSION = 0
VERSION = 0.0.1
SO_VERSION = 0.0.1
DESCRIPTION = Common Samba-related widgets for GTK+ applications
MINOR_VERSION = 0
RELEASE_VERSION = 1
NOPROTO = YES
PUBLIC_HEADERS = common/gtk-smb.h common/select.h
OBJ_FILES = common/gtk-smb.o \

View File

@@ -481,6 +481,8 @@ heimdal_clean: hdb_asn1_clean spnego_asn1_clean krb5_asn1_clean
#######################
# Start SUBSYSTEM HEIMDAL
[LIBRARY::HEIMDAL]
VERSION = 0.0.1
SO_VERSION = 0.0.1
NOPROTO = YES
REQUIRED_SUBSYSTEMS = \
HEIMDAL_GSSAPI HEIMDAL_KRB5 KERBEROS \

View File

@@ -132,11 +132,10 @@ NOPROTO = YES
################################################
# Start SUBSYSTEM ldb
[LIBRARY::ldb]
MAJOR_VERSION = 0
MINOR_VERSION = 0
VERSION = 0.0.1
SO_VERSION = 0.0.1
DESCRIPTION = LDAP-like embedded database library
INIT_FUNCTION_TYPE = int (*) (void)
RELEASE_VERSION = 1
OBJ_FILES = \
common/ldb.o \
common/ldb_ldif.o \

View File

@@ -84,10 +84,9 @@ REQUIRED_SUBSYSTEMS = \
################################################
# Start SUBSYSTEM registry
[LIBRARY::registry]
MAJOR_VERSION = 0
MINOR_VERSION = 0
VERSION = 0.0.1
SO_VERSION = 0.0.1
DESCRIPTION = Windows-style registry library
RELEASE_VERSION = 1
OBJ_FILES = \
common/reg_interface.o \
common/reg_util.o \

View File

@@ -1,9 +1,8 @@
################################################
# Start SUBSYSTEM LIBSAMBA3
[LIBRARY::LIBSAMBA3]
MAJOR_VERSION = 0
MINOR_VERSION = 0
RELEASE_VERSION = 1
VERSION = 0.0.1
SO_VERSION = 0.0.1
DESCRIPTION = Library for reading Samba3 data files
PRIVATE_PROTO_HEADER = samba3_proto.h
PUBLIC_HEADERS = samba3.h

View File

@@ -1,9 +1,8 @@
##############################
# Start SUBSYSTEM SOCKET_WRAPPER
[LIBRARY::SOCKET_WRAPPER]
MAJOR_VERSION = 0
MINOR_VERSION = 0
RELEASE_VERSION = 1
VERSION = 0.0.1
SO_VERSION = 0.0.1
NOPROTO = YES
DESCRIPTION = Wrapper library for testing TCP/IP connections using Unix Sockets
PUBLIC_HEADERS = socket_wrapper.h

View File

@@ -1,9 +1,8 @@
################################################
# Start LIBRARY LIBTALLOC
[LIBRARY::LIBTALLOC]
MAJOR_VERSION = 0
MINOR_VERSION = 0
RELEASE_VERSION = 1
VERSION = 0.0.1
SO_VERSION = 0.0.1
OBJ_FILES = talloc.o
REQUIRED_SUBSYSTEMS = LIBREPLACE
NOPROTO = YES

View File

@@ -1,9 +1,8 @@
################################################
# Start SUBSYSTEM LIBTDB
[LIBRARY::LIBTDB]
MAJOR_VERSION = 0
MINOR_VERSION = 0
RELEASE_VERSION = 1
VERSION = 0.0.1
SO_VERSION = 0.0.1
DESCRIPTION = Trivial Database Library
OBJ_FILES = \
common/tdb.o common/dump.o common/io.o common/lock.o \

View File

@@ -1,8 +1,7 @@
[LIBRARY::TDR]
PUBLIC_HEADERS = tdr.h
MAJOR_VERSION = 0
MINOR_VERSION = 0
RELEASE_VERSION = 1
VERSION = 0.0.1
SO_VERSION = 0.0.1
DESCRIPTION = Simple marshall/unmarshall library
PRIVATE_PROTO_HEADER = tdr_proto.h
OBJ_FILES = tdr.o

View File

@@ -1,7 +1,6 @@
[LIBRARY::LIBBASIC]
MAJOR_VERSION = 0
MINOR_VERSION = 0
RELEASE_VERSION = 1
VERSION = 0.0.1
SO_VERSION = 0.0.1
DESCRIPTION = Generic utility functions
PRIVATE_PROTO_HEADER = util_proto.h
PUBLIC_HEADERS = util.h \

View File

@@ -39,9 +39,8 @@ REQUIRED_SUBSYSTEMS = LIBCLI_COMPOSITE
OBJ_FILES = nbt/nbtname.o\
[LIBRARY::LIBCLI_NBT]
MAJOR_VERSION = 0
MINOR_VERSION = 0
RELEASE_VERSION = 1
VERSION = 0.0.1
SO_VERSION = 0.0.1
DESCRIPTION = NetBios over TCP/IP client library
PRIVATE_PROTO_HEADER = nbt/nbt_proto.h
OBJ_FILES = \
@@ -64,9 +63,8 @@ NOPROTO=YES
REQUIRED_SUBSYSTEMS = LIBCLI_NBT
[LIBRARY::LIBCLI_CLDAP]
MAJOR_VERSION = 0
MINOR_VERSION = 0
RELEASE_VERSION = 1
VERSION = 0.0.1
SO_VERSION = 0.0.1
DESCRIPTION = CLDAP client library
OBJ_FILES = cldap/cldap.o
PUBLIC_HEADERS = cldap/cldap.h
@@ -75,9 +73,8 @@ REQUIRED_SUBSYSTEMS = LIBCLI_LDAP
[LIBRARY::LIBCLI_WREPL]
PRIVATE_PROTO_HEADER = wrepl/winsrepl_proto.h
MAJOR_VERSION = 0
MINOR_VERSION = 0
RELEASE_VERSION = 1
VERSION = 0.0.1
SO_VERSION = 0.0.1
DESCRIPTION = WINS Replication client library
OBJ_FILES = \
wrepl/winsrepl.o
@@ -100,9 +97,8 @@ OBJ_FILES = \
REQUIRED_SUBSYSTEMS = LIBCLI_NBT MESSAGING
[LIBRARY::LIBCLI]
MAJOR_VERSION = 0
MINOR_VERSION = 0
RELEASE_VERSION = 1
VERSION = 0.0.1
SO_VERSION = 0.0.1
DESCRIPTION = SMB/CIFS client library
REQUIRED_SUBSYSTEMS = LIBCLI_RAW LIBCLI_UTILS LIBCLI_AUTH \
LIBCLI_SMB_COMPOSITE LIBCLI_NBT LIB_SECURITY LIBCLI_RESOLVE \

View File

@@ -1,9 +1,8 @@
#################################
# Start SUBSYSTEM LIBNET
[LIBRARY::LIBNET]
MAJOR_VERSION = 0
MINOR_VERSION = 0
RELEASE_VERSION = 1
VERSION = 0.0.1
SO_VERSION = 0.0.1
DESCRIPTION = User-friendly access to Samba interfaces
PRIVATE_PROTO_HEADER = libnet_proto.h
PUBLIC_HEADERS = libnet.h libnet_join.h libnet_lookup.h libnet_passwd.h \

File diff suppressed because it is too large Load Diff

View File

@@ -78,15 +78,6 @@ CONFIGFILE = $(CONFIGDIR)/smb.conf
PKGCONFIGDIR = $(LIBDIR)/pkgconfig
LMHOSTSFILE = $(CONFIGDIR)/lmhosts
PATH_FLAGS = -DCONFIGFILE=\"$(CONFIGFILE)\" -DSBINDIR=\"$(SBINDIR)\" \
-DBINDIR=\"$(BINDIR)\" -DLMHOSTSFILE=\"$(LMHOSTSFILE)\" \
-DLOCKDIR=\"$(LOCKDIR)\" -DPIDDIR=\"$(PIDDIR)\" -DDATADIR=\"$(DATADIR)\" \
-DLOGFILEBASE=\"$(LOGFILEBASE)\" -DSHLIBEXT=\"$(SHLIBEXT)\" \
-DCONFIGDIR=\"$(CONFIGDIR)\" -DNCALRPCDIR=\"$(NCALRPCDIR)\" \
-DSWATDIR=\"$(SWATDIR)\" -DPRIVATE_DIR=\"$(PRIVATEDIR)\" \
-DMODULESDIR=\"$(MODULESDIR)\" -DJSDIR=\"$(JSDIR)\" \
-DSETUPDIR=\"$(SETUPDIR)\" -DWINBINDD_SOCKET_DIR=\"$(WINBINDD_SOCKET_DIR)\"
install: showlayout installbin installdat installswat installmisc installlib \
installheader installpc installplugins

View File

@@ -1,10 +1,9 @@
#################################
# Start SUBSYSTEM LIBWINBIND_CLIENT
[LIBRARY::LIBWINBIND_CLIENT]
MAJOR_VERSION = 0
MINOR_VERSION = 0
VERSION = 0.0.1
SO_VERSION = 0.0.1
DESCRIPTION = Client library for communicating with winbind
RELEASE_VERSION = 1
OBJ_FILES = wb_common.o
NOPROTO=YES
# End SUBSYSTEM LIBWINBIND_CLIENT

View File

@@ -66,11 +66,10 @@ OBJ_FILES = \
# Start SUBSYSTEM NTVFS
[LIBRARY::ntvfs]
PUBLIC_HEADERS = ntvfs.h
MAJOR_VERSION = 0
MINOR_VERSION = 0
VERSION = 0.0.1
SO_VERSION = 0.0.1
DESCRIPTION = Virtual File System with NTFS semantics
PRIVATE_PROTO_HEADER = ntvfs_proto.h
RELEASE_VERSION = 1
OBJ_FILES = \
ntvfs_base.o \
ntvfs_generic.o \

View File

@@ -6,6 +6,15 @@ OBJ_FILES = ../dynconfig.o \
REQUIRED_SUBSYSTEMS = LIBBASIC
PRIVATE_PROTO_HEADER = param.h
PATH_FLAGS = -DCONFIGFILE=\"$(CONFIGFILE)\" -DSBINDIR=\"$(SBINDIR)\" \
-DBINDIR=\"$(BINDIR)\" -DLMHOSTSFILE=\"$(LMHOSTSFILE)\" \
-DLOCKDIR=\"$(LOCKDIR)\" -DPIDDIR=\"$(PIDDIR)\" -DDATADIR=\"$(DATADIR)\" \
-DLOGFILEBASE=\"$(LOGFILEBASE)\" -DSHLIBEXT=\"$(SHLIBEXT)\" \
-DCONFIGDIR=\"$(CONFIGDIR)\" -DNCALRPCDIR=\"$(NCALRPCDIR)\" \
-DSWATDIR=\"$(SWATDIR)\" -DPRIVATE_DIR=\"$(PRIVATEDIR)\" \
-DMODULESDIR=\"$(MODULESDIR)\" -DJSDIR=\"$(JSDIR)\" \
-DSETUPDIR=\"$(SETUPDIR)\" -DWINBINDD_SOCKET_DIR=\"$(WINBINDD_SOCKET_DIR)\"
dynconfig.o: dynconfig.c Makefile
@echo Compiling $<
@$(CC) $(CFLAGS) $(PICFLAG) $(PATH_FLAGS) -c $< -o $@

View File

@@ -79,22 +79,7 @@ REQUIRED_SUBSYSTEMS = \
LIBNET LIBSMB LIBPOPT \
POPT_CREDENTIALS POPT_SAMBA \
dcerpc \
NDR_TABLE \
RPC_EJS_SECURITY \
RPC_EJS_LSA \
RPC_EJS_ECHO \
RPC_EJS_WINREG \
RPC_EJS_DFS \
RPC_EJS_MISC \
RPC_EJS_EVENTLOG \
RPC_EJS_SAMR \
RPC_EJS_WKSSVC \
RPC_EJS_SRVSVC \
RPC_EJS_SVCCTL \
RPC_EJS_INITSHUTDOWN \
RPC_EJS_NETLOGON \
RPC_EJS_DRSUAPI \
RPC_EJS_IRPC
NDR_TABLE
# End SUBSYSTEM smbcalls
#######################