Changes by: antona
Update of /cvsroot/linux-ntfs/linux-ntfs
In directory usw-pr-cvs1:/tmp/cvs-serv24237
Modified Files:
ChangeLog Makefile.am Makefile.in TODO.WIP TODO.libntfs
aclocal.m4 configure
Log Message:
huge update!
Index: ChangeLog
===================================================================
RCS file: /cvsroot/linux-ntfs/linux-ntfs/ChangeLog,v
retrieving revision 1.55
retrieving revision 1.56
diff -U2 -r1.55 -r1.56
--- ChangeLog 19 May 2002 18:37:27 -0000 1.55
+++ ChangeLog 1 Jun 2002 00:41:44 -0000 1.56
@@ -61,18 +61,23 @@
ntfs_merge_run_lists(),
ntfs_decompress_mapping_pairs(),
- ntfs_{rl,attr}_map_run_list(),
- ntfs_attr_map_run_list(), and
- ntfs_attr_find_vcn().
+ ntfs_attr_map_run_list(),
+ ntfs_{rl,attr}_vcn_to_lcn(),
+ ntfs_attr_find_vcn(),
+ ntfs_attr_init(),
+ ntfs_attr_{open,close}().
- Add new field mftmirr_size to ntfs_volume structure and initialize
it to the number of mft records stored in the mft mirror in
ntfs_mount().
- - Add new field mftmirr_rl to ntfs_volume structure and initialize it
- in ntfs_mount to the mftmirr_lcn determined position and the
- mftmirr_size determined size.
+ - Add new fields mftmirr_ni and mftmirr_na to ntfs_volume structure and
+ initialize them in ntfs_mount to the $MFTMirr inode and $DATA
+ attribute. Ditto for mft_ni ($MFT inode), mft_na ($MFT/$DATA),
+ mftbmp_na ($MFT/$BITMAP), lcnbmp_ni ($Bitmap inode), and
+ lcnbmp_na ($Bitmap/$DATA). Remove previous fields replaced by these.
+ - Rename a few fields in ntfs_volume structure to make them shorter,
+ e.g. now have nr_mft_records and nr_clusters.
- Add new API for doing I/O on both normal and multi sector transfer
protected ntfs attributes described by the ntfs_attr structure,
provided by attrib.[hc]:
- ntfs_attr_{open,close}(),
- ntfs_attr_p{read,write}(), and
+ ntfs_attr_p{read,write}(), -> read done, write not yet
ntfs_attr_mst_p{read,write}(). -> read done, write not yet
Index: Makefile.am
===================================================================
RCS file: /cvsroot/linux-ntfs/linux-ntfs/Makefile.am,v
retrieving revision 1.8
retrieving revision 1.9
diff -U2 -r1.8 -r1.9
--- Makefile.am 8 May 2002 05:49:35 -0000 1.8
+++ Makefile.am 1 Jun 2002 00:41:45 -0000 1.9
@@ -11,5 +11,5 @@
EXTRA_DIST = AUTHORS CREDITS COPYING TODO.include TODO.ntfsfix ChangeLog \
INSTALL NEWS README autogen.sh linux-ntfs.spec.in TODO.mkntfs \
- TODO.ntfslabel TODO.ntfsinfo
+ TODO.ntfslabel TODO.ntfsinfo TODO.libntfs
AUTOMAKE_OPTIONS = gnu
Index: Makefile.in
===================================================================
RCS file: /cvsroot/linux-ntfs/linux-ntfs/Makefile.in,v
retrieving revision 1.15
retrieving revision 1.16
diff -U2 -r1.15 -r1.16
--- Makefile.in 8 May 2002 05:49:35 -0000 1.15
+++ Makefile.in 1 Jun 2002 00:41:45 -0000 1.16
@@ -96,5 +96,5 @@
EXTRA_DIST = AUTHORS CREDITS COPYING TODO.include TODO.ntfsfix ChangeLog \
INSTALL NEWS README autogen.sh linux-ntfs.spec.in TODO.mkntfs \
- TODO.ntfslabel TODO.ntfsinfo
+ TODO.ntfslabel TODO.ntfsinfo TODO.libntfs
Index: TODO.WIP
===================================================================
RCS file: /cvsroot/linux-ntfs/linux-ntfs/TODO.WIP,v
retrieving revision 1.1
retrieving revision 1.2
diff -U2 -r1.1 -r1.2
--- TODO.WIP 22 Apr 2002 10:39:16 -0000 1.1
+++ TODO.WIP 1 Jun 2002 00:41:45 -0000 1.2
@@ -2,15 +2,14 @@
--------------------------------
-- libntfs/attrib.c finish of ntfs_map_run_list() and add open/close attr or
- fuse ntfs_vcn_to_lcn() with ntfs_map_run_list().
+- fix ntfsfix & ntfs_mount() interaction wrt to detecting and fixing
+ differences between $MFT and $MFTMirr. ATM ntfs_mount() would fail when
+ called from ntfsfix and ntfsfix would abort without ever getting to run the
+ fixup code.
-- Decide on API for run list merging stuff and describe it and define it in
- include/attrib.h.
+- write ntfs_attr_{mst_}pwrite
-- Decide on API for attributes. What do we do with the run lists? Do we cache
- them in some kind of ntfs_attr structure? Probably necessary. Then, do we
- attach attributes to the corresponding ntfs_inode? Invalidation of other
- attributes on edit required which is a PITA. Do we just atach the inode
- to the attribute instead and expect the user to not shoot themselves in the
- foot? Probably best solution... Will see...
+- fix mft.c::ntfs_write_mft_records to take initialized_size and
+ data_size into consideration
+
+- ntfs_write_mft_records needs cleanup to use ntfs_attr_mst_pwrite
Index: TODO.libntfs
===================================================================
RCS file: /cvsroot/linux-ntfs/linux-ntfs/TODO.libntfs,v
retrieving revision 1.4
retrieving revision 1.5
diff -U2 -r1.4 -r1.5
--- TODO.libntfs 19 May 2002 18:37:27 -0000 1.4
+++ TODO.libntfs 1 Jun 2002 00:41:45 -0000 1.5
@@ -3,17 +3,6 @@
*****************
-- finish volume reading code to setup the the inodes and attributes properly
- ready for access
+- write ntfs_attr_{mst_}pwrite
-- fix mft.c::ntfs_{read,write}_mft_records to take initialized_size and
- data_size into consideration
-
-- fix attrib.c::ntfs_attr_{mst_,}pread to take initialized_size and data_size
- into consideration
-
-- ntfs_attr_{mst_}pread need to take initialised_size and data_size into
- consideration! So need to add the sizes to struct ntfs_attr
-
-- ntfs_read_mft_records needs cleanup to use ntfs_attr_mst_pread, dito for write
*******************
@@ -23,14 +12,9 @@
new, in approximate order of importance:
-- extend disk_io API with rl_p{read,write} (see mkntfs)
-
-- write attribute read,write functions
+- extend disk_io API with ntfs_rl_p{read,write} (see mkntfs)
- create API reference book template (cf. linux kernel)
- enable automatic creation of API reference
-- write attribute mapping functions, attaching the attributes to their open
- ntfs_inode and caching the run list that way to optimize speed of access
-
- add read/write of compressed attributes
@@ -67,4 +51,8 @@
start adding extra functionality in random order:
+
+- Do we attach attributes (ntfs_attr) to the corresponding ntfs_inode? Now we
+ just atach the inode to the attribute and expect the user to not shoot
+ themselves in the foot.
- add read/set of various file attributes/flags to library
Index: aclocal.m4
===================================================================
RCS file: /cvsroot/linux-ntfs/linux-ntfs/aclocal.m4,v
retrieving revision 1.10
retrieving revision 1.11
diff -U2 -r1.10 -r1.11
--- aclocal.m4 25 Apr 2002 07:50:33 -0000 1.10
+++ aclocal.m4 1 Jun 2002 00:41:45 -0000 1.11
@@ -162,4 +162,5 @@
# serial 46 AC_PROG_LIBTOOL
+
AC_DEFUN([AC_PROG_LIBTOOL],
[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
@@ -287,7 +288,28 @@
])
+# AC_LIBTOOL_HEADER_ASSERT
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT],
+[AC_CACHE_CHECK([whether $CC supports assert without backlinking],
+ [lt_cv_func_assert_works],
+ [case $host in
+ *-*-solaris*)
+ if test "$GCC" = yes && test "$with_gnu_ld" != yes; then
+ case `$CC --version 2>/dev/null` in
+ [[12]].*) lt_cv_func_assert_works=no ;;
+ *) lt_cv_func_assert_works=yes ;;
+ esac
+ fi
+ ;;
+ esac])
+
+if test "x$lt_cv_func_assert_works" = xyes; then
+ AC_CHECK_HEADERS(assert.h)
+fi
+])# AC_LIBTOOL_HEADER_ASSERT
+
# _LT_AC_CHECK_DLFCN
# --------------------
-AC_DEFUN(_LT_AC_CHECK_DLFCN,
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
[AC_CHECK_HEADERS(dlfcn.h)
])# _LT_AC_CHECK_DLFCN
@@ -307,8 +329,8 @@
# Character class describing NM global symbol codes.
-[symcode='[BCDEGRST]']
+symcode='[[BCDEGRST]]'
# Regexp to match symbols that can be accessed directly from C.
-[sympat='\([_A-Za-z][_A-Za-z0-9]*\)']
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
# Transform the above into a raw symbol and a C symbol.
@@ -318,23 +340,27 @@
lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
# Define system-specific variables.
case $host_os in
aix*)
- [symcode='[BCDT]']
+ symcode='[[BCDT]]'
;;
cygwin* | mingw* | pw32*)
- [symcode='[ABCDGISTW]']
+ symcode='[[ABCDGISTW]]'
;;
hpux*) # Its linker distinguishes data from code symbols
lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
;;
irix*)
- [symcode='[BCDEGRST]']
+ symcode='[[BCDEGRST]]'
;;
solaris* | sysv5*)
- [symcode='[BDT]']
+ symcode='[[BDT]]'
;;
sysv4)
- [symcode='[DFNSTU]']
+ symcode='[[DFNSTU]]'
;;
esac
@@ -350,5 +376,5 @@
# If we're using GNU nm, then use its standard symbol codes.
if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
- [symcode='[ABCDGISTW]']
+ symcode='[[ABCDGISTW]]'
fi
@@ -357,5 +383,5 @@
# Write the raw and C identifiers.
-[lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"]
+lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
# Check to see that the pipe works correctly.
@@ -399,7 +425,7 @@
cat <<EOF >> conftest.$ac_ext
#if defined (__STDC__) && __STDC__
-# define lt_ptr_t void *
+# define lt_ptr void *
#else
-# define lt_ptr_t char *
+# define lt_ptr char *
# define const
#endif
@@ -408,12 +434,12 @@
const struct {
const char *name;
- lt_ptr_t address;
+ lt_ptr address;
}
-[lt_preloaded_symbols[] =]
+lt_preloaded_symbols[[]] =
{
EOF
- sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" >> conftest.$ac_ext
+ sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext
cat <<\EOF >> conftest.$ac_ext
- {0, (lt_ptr_t) 0}
+ {0, (lt_ptr) 0}
};
@@ -459,8 +485,11 @@
if test -z "$lt_cv_sys_global_symbol_pipe"; then
global_symbol_to_cdecl=
+ global_symbol_to_c_name_address=
else
global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
+ global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address"
fi
-if test -z "$global_symbol_pipe$global_symbol_to_cdecl"; then
+if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address";
+then
AC_MSG_RESULT(failed)
else
@@ -480,4 +509,5 @@
*) lt_cv_sys_path_separator=':' ;;
esac
+ PATH_SEPARATOR=$lt_cv_sys_path_separator
fi
])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
@@ -486,8 +516,8 @@
# --------------------------
# Add some code to the start of the generated configure script which
-# will find an echo command which doesn;t interpret backslashes.
+# will find an echo command which doesn't interpret backslashes.
AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
- [AC_DIVERT_PUSH(NOTICE)])
+ [AC_DIVERT_PUSH(NOTICE)])
_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
@@ -555,5 +585,5 @@
# So, first we look for a working echo in the user's PATH.
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR
for dir in $PATH /usr/ucb; do
if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
@@ -644,5 +674,5 @@
# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
# ------------------------------------------------------------------
-AC_DEFUN(_LT_AC_TRY_DLOPEN_SELF,
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
[if test "$cross_compiling" = yes; then :
[$4]
@@ -731,5 +761,5 @@
# AC_LIBTOOL_DLOPEN_SELF
# -------------------
-AC_DEFUN(AC_LIBTOOL_DLOPEN_SELF,
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
[if test "x$enable_dlopen" != xyes; then
enable_dlopen=unknown
@@ -753,14 +783,20 @@
*)
- AC_CHECK_LIB(dl, dlopen, [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
- [AC_CHECK_FUNC(dlopen, lt_cv_dlopen="dlopen",
- [AC_CHECK_FUNC(shl_load, lt_cv_dlopen="shl_load",
- [AC_CHECK_LIB(svld, dlopen,
- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
- [AC_CHECK_LIB(dld, shl_load,
- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen="shl_load"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen="dlopen"],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+ ])
])
- ])
- ])
+ ])
+ ])
])
;;
@@ -825,8 +861,8 @@
# metacharacters that are still active within double-quoted strings.
Xsed='sed -e s/^X//'
-[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
+sed_quote_subst='s/\([[\\"\\`$\\\\]]\)/\\\1/g'
# Same as above, but do not quote variable references.
-[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
+double_quote_subst='s/\([[\\"\\`\\\\]]\)/\\\1/g'
# Sed substitution to delay expansion of an escaped shell variable in a
@@ -897,6 +933,13 @@
if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ ;;
+ *)
+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ ;;
+ esac
old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
fi
@@ -918,5 +961,5 @@
-AC_ARG_WITH(pic,
+AC_ARG_WITH(pic,
[ --with-pic try to use only PIC/non-PIC objects [default=use both]],
pic_mode="$withval", pic_mode=default)
@@ -946,5 +989,5 @@
# list by gcc. This cause undefined symbols with -static flags.
# This hack allows C programs to be linked with "-static -ldl", but
- # we not sure about C++ programs.
+ # not sure about C++ programs.
lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
;;
@@ -981,11 +1024,11 @@
case $host_os in
aix3* | aix4* | aix5*)
+ lt_cv_prog_cc_wl='-Wl,'
# All AIX code is PIC.
if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- lt_cv_prog_cc_static='-Bstatic'
- lt_cv_prog_cc_wl='-Wl,'
+ # AIX 5 now supports IA64 processor
+ lt_cv_prog_cc_static='-Bstatic'
else
- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
+ lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
fi
;;
@@ -1043,7 +1086,7 @@
lt_cv_prog_cc_static='-Bstatic'
if test "x$host_vendor" = xsni; then
- lt_cv_prog_cc_wl='-LD'
+ lt_cv_prog_cc_wl='-LD'
else
- lt_cv_prog_cc_wl='-Wl,'
+ lt_cv_prog_cc_wl='-Wl,'
fi
;;
@@ -1112,5 +1155,5 @@
if test -n "$lt_cv_prog_cc_shlib"; then
AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries])
- if echo "$old_CC $old_CFLAGS " | [egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]"] >/dev/null; then :
+ if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then :
else
AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure])
@@ -1188,4 +1231,6 @@
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -c -o conftest.lo"
+ save_objext="$ac_objext"
+ ac_objext=lo
AC_TRY_COMPILE([], [int some_variable = 0;], [dnl
# The compiler can only warn and ignore the option if not recognized
@@ -1197,4 +1242,5 @@
fi
])
+ ac_objext="$save_objext"
CFLAGS="$save_CFLAGS"
])
@@ -1293,5 +1339,5 @@
case $host_os in
-cygwin* | mingw* | pw32* )
+cygwin* | mingw* | pw32*)
# FIXME: the MSVC++ port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
@@ -1301,5 +1347,7 @@
fi
;;
-
+openbsd*)
+ with_gnu_ld=no
+ ;;
esac
@@ -1388,5 +1436,5 @@
if test "x$lt_cv_need_dllmain" = "xyes"; then
ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
- ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < [$]0 > $output_objdir/$soname-ltdll.c~
+ ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~
test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
else
@@ -1401,5 +1449,5 @@
export_symbols_cmds="$ltdll_cmds"'
$DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
- [sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//"] < $output_objdir/$soname-def > $export_symbols'
+ sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
# If the export-symbols file already is a .def file (1st line
@@ -1407,16 +1455,16 @@
# If DATA tags from a recent dlltool are present, honour them!
archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then
- cp $export_symbols $output_objdir/$soname-def;
+ cp $export_symbols $output_objdir/$soname-def;
else
- echo EXPORTS > $output_objdir/$soname-def;
- _lt_hint=1;
- cat $export_symbols | while read symbol; do
- set dummy \$symbol;
- case \[$]# in
- 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
- *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;;
- esac;
- _lt_hint=`expr 1 + \$_lt_hint`;
- done;
+ echo EXPORTS > $output_objdir/$soname-def;
+ _lt_hint=1;
+ cat $export_symbols | while read symbol; do
+ set dummy \$symbol;
+ case \[$]# in
+ 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
+ *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;;
+ esac;
+ _lt_hint=`expr 1 + \$_lt_hint`;
+ done;
fi~
'"$ltdll_cmds"'
@@ -1513,4 +1561,29 @@
aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
# When large executables or shared objects are built, AIX ld can
# have problems creating the table of contents. If linking a library
@@ -1519,72 +1592,63 @@
# enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+ hardcode_direct=yes
archive_cmds=''
hardcode_libdir_separator=':'
if test "$GCC" = yes; then
- collect2name=`${CC} -print-prog-name=collect2`
- if test -f "$collect2name" && \
- strings "$collect2name" | grep resolve_lib_name >/dev/null
- then
- # We have reworked collect2
- hardcode_direct=yes
- else
- # We have old collect2
- hardcode_direct=unsupported
- # It fails to find uninstalled libraries when the uninstalled
- # path is not listed in the libpath. Setting hardcode_minus_L
- # to unsupported forces relinking
- hardcode_minus_L=yes
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_libdir_separator=
- fi
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct=yes
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ esac
+
shared_flag='-shared'
else
+ # not using gcc
if test "$host_cpu" = ia64; then
- shared_flag='-G'
+ shared_flag='${wl}-G'
else
- shared_flag='${wl}-bM:SRE'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
fi
- hardcode_direct=yes
fi
- if test "$host_cpu" = ia64; then
- # On IA64, the linker does run time linking by default, so we don't
- # have to do anything special.
- aix_use_runtimelinking=no
- exp_sym_flag='-Bexport'
- no_entry_flag=""
- else
- # Test if we are trying to use run time linking, or normal AIX style linking.
- # If -brtl is somewhere in LDFLAGS, we need to do run time linking.
- aix_use_runtimelinking=no
- for ld_flag in $LDFLAGS; do
- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then
- aix_use_runtimelinking=yes
- break
- fi
- done
- exp_sym_flag='-bexport'
- no_entry_flag='-bnoentry'
- fi
# It seems that -bexpall can do strange things, so it is better to
# generate a list of symbols to export.
always_export_symbols=yes
if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag='-berok'
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
- allow_undefined_flag=' -Wl,-G'
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
else
if test "$host_cpu" = ia64; then
- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
- allow_undefined_flag="-znodefs"
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
else
- hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
- # Warning - without using the other run time loading flags, -berok will
- # link without error, but may produce a broken library.
- allow_undefined_flag='${wl}-berok'
- # This is a bit strange, but is similar to how AIX traditionally builds
- # it's shared libraries.
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname'
+ hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag='${wl}-berok'
+ # This is a bit strange, but is similar to how AIX traditionally builds
+ # it's shared libraries.
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname'
fi
fi
@@ -1618,9 +1682,16 @@
darwin* | rhapsody*)
- allow_undefined_flag='-undefined suppress'
+ case "$host_os" in
+ rhapsody* | darwin1.[[012]])
+ allow_undefined_flag='-undefined suppress'
+ ;;
+ *) # Darwin 1.3 on
+ allow_undefined_flag='-flat_namespace -undefined suppress'
+ ;;
+ esac
# FIXME: Relying on posixy $() will cause problems for
# cross-compilation, but unfortunately the echo tests do not
# yet detect zsh echo's removal of \ escapes.
- archive_cmds='$CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linkopts -install_name $rpath/$soname $(test -n "$verstring" -a x$verstring != x0.0 && echo $verstring)'
+ archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring'
# We need to add '_' to the symbols in $export_symbols first
#archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
@@ -1697,5 +1768,5 @@
newsos6)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
@@ -1705,8 +1776,22 @@
openbsd*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+ case "$host_os" in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
;;
@@ -1753,8 +1838,37 @@
runpath_var=LD_RUN_PATH
hardcode_runpath_var=yes
+ export_dynamic_flag_spec='${wl}-Bexport'
;;
solaris*)
+ # gcc --version < 3.0 without binutils cannot create self contained
+ # shared libraries reliably, requiring libgcc.a to resolve some of
+ # the object symbols generated in some cases. Libraries that use
+ # assert need libgcc.a to resolve __eprintf, for example. Linking
+ # a copy of libgcc.a into every shared library to guarantee resolving
+ # such symbols causes other problems: According to Tim Van Holder
+ # <tim...@pa...>, C++ libraries end up with a separate
+ # (to the application) exception stack for one thing.
no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ case `$CC --version 2>/dev/null` in
+ [[12]].*)
+ cat <<EOF 1>&2
+
+*** Warning: Releases of GCC earlier than version 3.0 cannot reliably
+*** create self contained shared libraries on Solaris systems, without
+*** introducing a dependency on libgcc.a. Therefore, libtool is disabling
+*** -no-undefined support, which will at least allow you to build shared
+*** libraries. However, you may find that when you link such libraries
+*** into an application without using GCC, you have to manually add
+*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to
+*** upgrade to a newer version of GCC. Another option is to rebuild your
+*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.
+
+EOF
+ no_undefined_flag=
+ ;;
+ esac
+ fi
# $CC -shared without GNU ld will not create a library from C++
# object files and a static libstdc++, better avoid it by now
@@ -1765,5 +1879,5 @@
hardcode_shlibpath_var=no
case $host_os in
- [solaris2.[0-5] | solaris2.[0-5].*]) ;;
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
*) # Supported since Solaris 2.6 (maybe 2.5.1?)
whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
@@ -1788,5 +1902,5 @@
sysv4)
if test "x$host_vendor" = xsno; then
- archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linkopts'
+ archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes # is this really true???
else
@@ -1945,20 +2059,22 @@
# development snapshots of GCC prior to 3.0.
case $host_os in
- [ aix4 | aix4.[01] | aix4.[01].*)]
- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
- echo ' yes '
- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
- :
- else
- can_build_shared=no
- fi
- ;;
+ aix4 | aix4.[[01]] | aix4.[[01]].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
esac
- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
- ...
[truncated message content] |