diff options
author | Michael Nottebrock <lofi@FreeBSD.org> | 2007-07-04 10:25:00 +0000 |
---|---|---|
committer | Michael Nottebrock <lofi@FreeBSD.org> | 2007-07-04 10:25:00 +0000 |
commit | 961141fb14b688f13c92a4be6bbc4ba0ab9cf51b (patch) | |
tree | 8d33a723594dd3d8d48dfd3dcd1ded76eb0a52c0 /devel/kdevelop | |
parent | 266731846b6f73f86b69daad7127f89ecc40fac2 (diff) | |
download | ports-961141fb14b688f13c92a4be6bbc4ba0ab9cf51b.tar.gz ports-961141fb14b688f13c92a4be6bbc4ba0ab9cf51b.zip |
Notes
Diffstat (limited to 'devel/kdevelop')
-rw-r--r-- | devel/kdevelop/Makefile | 9 | ||||
-rw-r--r-- | devel/kdevelop/distinfo | 6 | ||||
-rw-r--r-- | devel/kdevelop/files/patch-appwizard-libtool | 4444 | ||||
-rw-r--r-- | devel/kdevelop/files/patch-fix_qmake_parser | 6341 | ||||
-rw-r--r-- | devel/kdevelop/files/patch-kdev_fix_hang_3.4.1 | 54 | ||||
-rw-r--r-- | devel/kdevelop/pkg-plist | 14 |
6 files changed, 262 insertions, 10606 deletions
diff --git a/devel/kdevelop/Makefile b/devel/kdevelop/Makefile index 2a6c2622f8a0..bf6a7d481709 100644 --- a/devel/kdevelop/Makefile +++ b/devel/kdevelop/Makefile @@ -6,11 +6,11 @@ # PORTNAME= kdevelop -PORTVERSION= 3.4.0 -PORTREVISION= 3 +PORTVERSION= 3.4.1 +PORTREVISION= 0 CATEGORIES?= devel kde MASTER_SITES= ${MASTER_SITE_KDE} -MASTER_SITE_SUBDIR= stable/${PORTNAME}-${PORTVERSION}/src +MASTER_SITE_SUBDIR= stable/${KDE_VERSION}/src # DISTNAME= ${KDE_DISTNAME} DIST_SUBDIR= KDE @@ -48,8 +48,7 @@ CONFIGURE_ARGS+=--with-qtdoc-dir=${X11BASE}/share/doc/qt/html \ --with-db-libdir=${BDB_LIB_DIR} --with-db-lib=${BDB_LIB_NAME} \ --with-apr-config=${LOCALBASE}/bin/apr-1-config \ --with-apu-config=${LOCALBASE}/bin/apu-1-config \ - --with-subversion-dir=${LOCALBASE} \ - --with-svn-include=${LOCALBASE}/include \ + --with-svn-include=${LOCALBASE}/include/subversion-1 \ --with-svn-lib=${LOCALBASE}/lib \ --with-neon-config=${LOCALBASE}/bin/neon-config diff --git a/devel/kdevelop/distinfo b/devel/kdevelop/distinfo index 7d68d9afd840..04f9608a0684 100644 --- a/devel/kdevelop/distinfo +++ b/devel/kdevelop/distinfo @@ -1,3 +1,3 @@ -MD5 (KDE/kdevelop-3.4.0.tar.bz2) = 9cf367c89329acf23738e23c0b663ee9 -SHA256 (KDE/kdevelop-3.4.0.tar.bz2) = c477c8980b5dfd4d512ad793d69dd4d5c7987e376789f68796a8013db08d3194 -SIZE (KDE/kdevelop-3.4.0.tar.bz2) = 9158370 +MD5 (KDE/kdevelop-3.4.1.tar.bz2) = abc6cc2831ad4c0f4da9fba9e38edce1 +SHA256 (KDE/kdevelop-3.4.1.tar.bz2) = f917321e6c4c35861aad7f9990f98f7b988fa4756ade624c9866f999a4845ef8 +SIZE (KDE/kdevelop-3.4.1.tar.bz2) = 9368912 diff --git a/devel/kdevelop/files/patch-appwizard-libtool b/devel/kdevelop/files/patch-appwizard-libtool index 99a3a09bf555..74792fcbcc1b 100644 --- a/devel/kdevelop/files/patch-appwizard-libtool +++ b/devel/kdevelop/files/patch-appwizard-libtool @@ -1,5 +1,5 @@ ---- parts/appwizard/common/admin/libtool.m4.in Sun Oct 1 19:29:11 2006 -+++ parts/appwizard/common/admin/libtool.m4.in Sun Dec 18 22:53:17 2005 +--- parts/appwizard/common/admin/libtool.m4.in.orig Mon May 14 09:53:52 2007 ++++ parts/appwizard/common/admin/libtool.m4.in Tue May 15 15:19:39 2007 @@ -1,28 +1,13 @@ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -## Copyright 1996, 1997, 1998, 1999, 2000, 2001 @@ -666,36 +666,7 @@ irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; -@@ -1421,22 +1565,19 @@ - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -- libsuff= -- if test "x$LINUX_64_MODE" = x64; then -- # Some platforms are per default 64-bit, so there's no /lib64 -- if test -d /lib64; then -- libsuff=64 -- fi -- fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no -- sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}" -- sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - -+ # Append ld.so.conf contents to the search path -+ if test -f /etc/ld.so.conf; then -+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` -+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" -+ fi -+ - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, -@@ -1446,6 +1587,18 @@ +@@ -1446,6 +1590,18 @@ dynamic_linker='GNU/Linux ld.so' ;; @@ -714,7 +685,7 @@ netbsd*) version_type=sunos need_lib_prefix=no -@@ -1455,7 +1608,7 @@ +@@ -1455,7 +1611,7 @@ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else @@ -723,7 +694,7 @@ soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi -@@ -1483,8 +1636,13 @@ +@@ -1483,8 +1639,13 @@ openbsd*) version_type=sunos @@ -738,7 +709,7 @@ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH -@@ -1504,7 +1662,7 @@ +@@ -1504,7 +1665,7 @@ os2*) libname_spec='$name' @@ -747,7 +718,7 @@ need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' -@@ -1522,13 +1680,6 @@ +@@ -1522,13 +1683,6 @@ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; @@ -761,7 +732,7 @@ solaris*) version_type=linux need_lib_prefix=no -@@ -1554,7 +1705,7 @@ +@@ -1554,7 +1708,7 @@ need_version=yes ;; @@ -770,7 +741,7 @@ version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' -@@ -1587,6 +1738,29 @@ +@@ -1587,6 +1741,29 @@ fi ;; @@ -800,7 +771,7 @@ uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -@@ -1600,6 +1774,11 @@ +@@ -1600,6 +1777,11 @@ esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no @@ -812,7 +783,7 @@ ])# AC_LIBTOOL_SYS_DYNAMIC_LINKER -@@ -1624,6 +1803,9 @@ +@@ -1624,6 +1806,9 @@ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) fi fi @@ -822,7 +793,7 @@ # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. -@@ -1650,7 +1832,9 @@ +@@ -1650,7 +1835,9 @@ case $tagname in CXX) @@ -833,7 +804,7 @@ AC_LIBTOOL_LANG_CXX_CONFIG else tagname="" -@@ -1712,7 +1896,7 @@ +@@ -1712,7 +1899,7 @@ # AC_LIBTOOL_WIN32_DLL # -------------------- @@ -842,7 +813,7 @@ AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_WIN32_DLL -@@ -1750,7 +1934,7 @@ +@@ -1750,7 +1937,7 @@ # AC_DISABLE_SHARED # ----------------- @@ -851,7 +822,7 @@ AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no) -@@ -1886,7 +2070,7 @@ +@@ -1886,7 +2073,7 @@ if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) @@ -860,7 +831,7 @@ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then -@@ -1996,7 +2180,7 @@ +@@ -1996,7 +2183,7 @@ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, @@ -869,7 +840,7 @@ # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) -@@ -2028,7 +2212,7 @@ +@@ -2028,7 +2215,7 @@ AC_DEFUN([AC_PROG_LD_GNU], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, @@ -878,7 +849,7 @@ case `$LD -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) lt_cv_prog_gnu_ld=yes -@@ -2055,6 +2239,15 @@ +@@ -2055,6 +2242,15 @@ *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' @@ -894,7 +865,7 @@ ])# AC_PROG_LD_RELOAD_FLAG -@@ -2088,44 +2281,36 @@ +@@ -2088,44 +2284,36 @@ lt_cv_deplibs_check_method=pass_all ;; @@ -950,7 +921,7 @@ lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; -@@ -2141,7 +2326,7 @@ +@@ -2141,7 +2329,7 @@ hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file @@ -959,7 +930,7 @@ ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so -@@ -2157,40 +2342,24 @@ +@@ -2157,40 +2345,24 @@ esac ;; @@ -1011,7 +982,7 @@ ;; netbsd*) -@@ -2212,32 +2381,22 @@ +@@ -2212,32 +2384,22 @@ ;; openbsd*) @@ -1047,7 +1018,7 @@ case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' -@@ -2258,10 +2417,13 @@ +@@ -2258,10 +2420,13 @@ siemens) lt_cv_deplibs_check_method=pass_all ;; @@ -1062,7 +1033,7 @@ lt_cv_deplibs_check_method=pass_all ;; esac -@@ -2281,36 +2443,43 @@ +@@ -2281,36 +2446,43 @@ # Let the user override the test. lt_cv_path_NM="$NM" else @@ -1130,7 +1101,7 @@ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) NM="$lt_cv_path_NM" -@@ -2342,13 +2511,13 @@ +@@ -2342,13 +2514,13 @@ # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl convenience library and # LTDLINCL to the include flags for the libltdl header and adds @@ -1151,7 +1122,7 @@ AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case $enable_ltdl_convenience in -@@ -2367,13 +2536,13 @@ +@@ -2367,13 +2539,13 @@ # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl installable library and # LTDLINCL to the include flags for the libltdl header and adds @@ -1172,7 +1143,7 @@ # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -@@ -2411,10 +2580,21 @@ +@@ -2411,10 +2583,21 @@ # --------------- AC_DEFUN([_LT_AC_LANG_CXX], [AC_REQUIRE([AC_PROG_CXX]) @@ -1195,7 +1166,7 @@ # AC_LIBTOOL_F77 # -------------- -@@ -2454,7 +2634,7 @@ +@@ -2454,7 +2637,7 @@ # AC_LIBTOOL_RC @@ -1204,7 +1175,7 @@ # enable support for Windows resource files AC_DEFUN([AC_LIBTOOL_RC], [AC_REQUIRE([LT_AC_PROG_RC]) -@@ -2487,36 +2667,9 @@ +@@ -2487,36 +2670,9 @@ _LT_AC_SYS_COMPILER @@ -1244,7 +1215,7 @@ ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change -@@ -2530,9 +2683,9 @@ +@@ -2530,9 +2686,9 @@ AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP @@ -1256,7 +1227,7 @@ AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) -@@ -2541,7 +2694,7 @@ +@@ -2541,7 +2697,7 @@ # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. @@ -1265,7 +1236,7 @@ aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then -@@ -2550,48 +2703,11 @@ +@@ -2550,48 +2706,11 @@ fi ;; @@ -1316,7 +1287,7 @@ esac AC_MSG_RESULT([$enable_shared]) -@@ -2616,7 +2732,7 @@ +@@ -2616,7 +2735,7 @@ AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], [AC_LANG_PUSH(C++) AC_REQUIRE([AC_PROG_CXX]) @@ -1325,7 +1296,7 @@ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= -@@ -2628,6 +2744,7 @@ +@@ -2628,6 +2747,7 @@ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no @@ -1333,7 +1304,7 @@ _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= -@@ -2645,7 +2762,7 @@ +@@ -2645,7 +2765,7 @@ _LT_AC_TAGVAR(compiler_lib_search_path, $1)= # Source file extension for C++ test sources. @@ -1342,7 +1313,7 @@ # Object file extension for compiled C++ test sources. objext=o -@@ -2655,11 +2772,15 @@ +@@ -2655,11 +2775,15 @@ lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests @@ -1359,7 +1330,7 @@ # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD -@@ -2670,18 +2791,18 @@ +@@ -2670,18 +2794,18 @@ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else @@ -1381,7 +1352,7 @@ # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately -@@ -2699,8 +2820,8 @@ +@@ -2699,8 +2823,8 @@ # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then @@ -1392,7 +1363,7 @@ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -@@ -2726,7 +2847,7 @@ +@@ -2726,7 +2850,7 @@ # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. @@ -1401,7 +1372,7 @@ fi # Commands to make compiler produce verbose output that lists -@@ -2756,8 +2877,23 @@ +@@ -2756,8 +2880,23 @@ exp_sym_flag='-Bexport' no_entry_flag="" else @@ -1427,7 +1398,7 @@ exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi -@@ -2774,7 +2910,7 @@ +@@ -2774,7 +2913,7 @@ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GXX" = yes; then @@ -1436,7 +1407,7 @@ # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` -@@ -2793,8 +2929,12 @@ +@@ -2793,8 +2932,12 @@ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi @@ -1449,7 +1420,7 @@ else # not using gcc if test "$host_cpu" = ia64; then -@@ -2803,15 +2943,16 @@ +@@ -2803,15 +2946,16 @@ shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then @@ -1470,7 +1441,7 @@ 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. -@@ -2820,13 +2961,12 @@ +@@ -2820,13 +2964,12 @@ _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -1486,7 +1457,7 @@ else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX -@@ -2835,16 +2975,26 @@ +@@ -2835,16 +2978,26 @@ # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' @@ -1518,7 +1489,7 @@ chorus*) case $cc_basename in *) -@@ -2858,12 +3008,12 @@ +@@ -2858,12 +3011,12 @@ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' @@ -1533,7 +1504,7 @@ # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then -@@ -2872,70 +3022,81 @@ +@@ -2872,70 +3025,81 @@ echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ @@ -1580,7 +1551,15 @@ - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-Wl,-flat_namespace -Wl,-undefined -Wl,suppress' -- else ++ if test "$GXX" = yes ; then ++ lt_int_apple_cc_single_mod=no ++ output_verbose_link_cmd='echo' ++ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then ++ lt_int_apple_cc_single_mod=yes ++ fi ++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-Wl,-flat_namespace -Wl,-undefined -Wl,suppress' @@ -1589,11 +1568,30 @@ - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-Wl,-undefined -Wl,dynamic_lookup' - ;; - esac -+ if test "$GXX" = yes ; then -+ lt_int_apple_cc_single_mod=no -+ output_verbose_link_cmd='echo' -+ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then -+ lt_int_apple_cc_single_mod=yes ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ fi ++ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ fi ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ case $cc_basename in ++ xlc*) ++ output_verbose_link_cmd='echo' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' ++ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ ;; ++ *) ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac fi - ;; - esac @@ -1625,34 +1623,6 @@ - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; -+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' -+ else -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' -+ fi -+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' -+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds -+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ else -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ fi -+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ else -+ case $cc_basename in -+ xlc*) -+ output_verbose_link_cmd='echo' -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' -+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' -+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ ;; -+ *) -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ esac -+ fi + ;; dgux*) @@ -1667,7 +1637,7 @@ # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no -@@ -2946,14 +3107,14 @@ +@@ -2946,14 +3110,14 @@ ;; esac ;; @@ -1684,7 +1654,7 @@ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_AC_TAGVAR(ld_shlibs, $1)=yes -@@ -2970,12 +3131,12 @@ +@@ -2970,12 +3134,12 @@ # location of the library. case $cc_basename in @@ -1700,7 +1670,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. -@@ -2984,11 +3145,11 @@ +@@ -2984,11 +3148,11 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. @@ -1714,7 +1684,7 @@ else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no -@@ -2998,33 +3159,22 @@ +@@ -2998,33 +3162,22 @@ ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then @@ -1755,7 +1725,7 @@ ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes -@@ -3035,17 +3185,20 @@ +@@ -3035,17 +3188,20 @@ esac case $cc_basename in @@ -1782,7 +1752,7 @@ ;; esac # Commands to make compiler produce verbose output that lists -@@ -3061,12 +3214,15 @@ +@@ -3061,12 +3217,15 @@ *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then @@ -1802,7 +1772,7 @@ ;; esac fi -@@ -3077,11 +3233,25 @@ +@@ -3077,11 +3236,25 @@ ;; esac ;; @@ -1830,7 +1800,7 @@ # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is -@@ -3092,9 +3262,9 @@ +@@ -3092,9 +3265,9 @@ *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then @@ -1842,7 +1812,7 @@ fi fi _LT_AC_TAGVAR(link_all_deplibs, $1)=yes -@@ -3105,14 +3275,14 @@ +@@ -3105,14 +3278,14 @@ ;; linux*) case $cc_basename in @@ -1860,7 +1830,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. -@@ -3130,20 +3300,44 @@ +@@ -3130,20 +3303,44 @@ # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; @@ -1911,7 +1881,7 @@ runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' -@@ -3171,7 +3365,7 @@ +@@ -3171,7 +3368,7 @@ ;; mvs*) case $cc_basename in @@ -1920,7 +1890,7 @@ # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; -@@ -3192,15 +3386,31 @@ +@@ -3192,15 +3389,31 @@ # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; @@ -1954,7 +1924,7 @@ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -@@ -3210,14 +3420,14 @@ +@@ -3210,14 +3423,14 @@ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; @@ -1972,7 +1942,7 @@ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -@@ -3235,7 +3445,7 @@ +@@ -3235,7 +3448,7 @@ *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' @@ -1981,7 +1951,7 @@ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -@@ -3254,13 +3464,13 @@ +@@ -3254,13 +3467,13 @@ ;; osf4* | osf5*) case $cc_basename in @@ -1997,7 +1967,7 @@ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -@@ -3269,17 +3479,17 @@ +@@ -3269,17 +3482,17 @@ # the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; @@ -2019,7 +1989,7 @@ $rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' -@@ -3298,7 +3508,7 @@ +@@ -3298,7 +3511,7 @@ *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' @@ -2028,7 +1998,7 @@ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -@@ -3319,27 +3529,14 @@ +@@ -3319,27 +3532,14 @@ # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; @@ -2058,7 +2028,7 @@ # Lucid # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no -@@ -3352,36 +3549,33 @@ +@@ -3352,36 +3552,33 @@ ;; solaris*) case $cc_basename in @@ -2107,7 +2077,7 @@ # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is -@@ -3389,9 +3583,9 @@ +@@ -3389,9 +3586,9 @@ # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; @@ -2119,7 +2089,7 @@ # The C++ compiler must be used to create the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' -@@ -3401,9 +3595,9 @@ +@@ -3401,9 +3598,9 @@ if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then @@ -2131,7 +2101,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when -@@ -3412,9 +3606,9 @@ +@@ -3412,9 +3609,9 @@ else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. @@ -2143,14 +2113,14 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when -@@ -3427,12 +3621,63 @@ +@@ -3427,12 +3624,63 @@ ;; esac ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + @@ -2183,7 +2153,7 @@ + # names for shared libraries. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' @@ -2209,7 +2179,7 @@ # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no -@@ -3469,8 +3714,6 @@ +@@ -3469,8 +3717,6 @@ AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) @@ -2218,7 +2188,7 @@ AC_LIBTOOL_CONFIG($1) -@@ -3488,7 +3731,7 @@ +@@ -3488,7 +3734,7 @@ ])# AC_LIBTOOL_LANG_CXX_CONFIG # AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) @@ -2227,7 +2197,7 @@ # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary -@@ -3542,7 +3785,7 @@ +@@ -3542,7 +3788,7 @@ # The `*' in the case matches for architectures that use `case' in # $output_verbose_cmd can trigger glob expansion during the loop # eval without this substitution. @@ -2236,7 +2206,7 @@ for p in `eval $output_verbose_link_cmd`; do case $p in -@@ -3582,7 +3825,7 @@ +@@ -3582,7 +3828,7 @@ fi ;; @@ -2245,7 +2215,7 @@ # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then -@@ -3618,13 +3861,37 @@ +@@ -3618,13 +3864,37 @@ $rm -f confest.$objext @@ -2284,7 +2254,7 @@ # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -@@ -3668,12 +3935,16 @@ +@@ -3668,12 +3938,16 @@ # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER @@ -2302,7 +2272,7 @@ AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) -@@ -3683,7 +3954,7 @@ +@@ -3683,7 +3957,7 @@ # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. @@ -2311,7 +2281,7 @@ aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then -@@ -3691,8 +3962,10 @@ +@@ -3691,8 +3965,10 @@ postinstall_cmds='$RANLIB $lib' fi ;; @@ -2324,7 +2294,7 @@ ;; esac AC_MSG_RESULT([$enable_shared]) -@@ -3702,8 +3975,6 @@ +@@ -3702,8 +3978,6 @@ test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) @@ -2333,7 +2303,7 @@ _LT_AC_TAGVAR(GCC, $1)="$G77" _LT_AC_TAGVAR(LD, $1)="$LD" -@@ -3713,8 +3984,6 @@ +@@ -3713,8 +3987,6 @@ AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) @@ -2342,7 +2312,7 @@ AC_LIBTOOL_CONFIG($1) -@@ -3743,20 +4012,27 @@ +@@ -3743,20 +4015,27 @@ lt_simple_compile_test_code="class foo {}\n" # Code to be used in simple link tests @@ -2371,7 +2341,7 @@ ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly -@@ -3768,8 +4044,6 @@ +@@ -3768,8 +4047,6 @@ AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) @@ -2380,7 +2350,7 @@ AC_LIBTOOL_CONFIG($1) -@@ -3779,7 +4053,7 @@ +@@ -3779,7 +4056,7 @@ # AC_LIBTOOL_LANG_RC_CONFIG @@ -2389,7 +2359,7 @@ # Ensure that the configuration vars for the Windows resource compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -@@ -3803,11 +4077,16 @@ +@@ -3803,11 +4080,16 @@ # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER @@ -2406,7 +2376,7 @@ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes AC_LIBTOOL_CONFIG($1) -@@ -3833,11 +4112,12 @@ +@@ -3833,11 +4115,12 @@ # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST @@ -2421,7 +2391,7 @@ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ -@@ -3887,7 +4167,7 @@ +@@ -3887,7 +4170,7 @@ _LT_AC_TAGVAR(archive_cmds, $1) | \ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ _LT_AC_TAGVAR(module_cmds, $1) | \ @@ -2430,7 +2400,7 @@ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ -@@ -3953,11 +4233,11 @@ +@@ -3953,11 +4236,11 @@ SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. @@ -2444,7 +2414,7 @@ # The names of the tagged configurations supported by this script. available_tags= -@@ -3988,6 +4268,12 @@ +@@ -3988,6 +4271,12 @@ # The host system. host_alias=$host_alias host=$host @@ -2457,7 +2427,7 @@ # An echo program that does not interpret backslashes. echo=$lt_echo -@@ -3999,6 +4285,9 @@ +@@ -3999,6 +4288,9 @@ # A C compiler. LTCC=$lt_LTCC @@ -2467,7 +2437,7 @@ # A language-specific compiler. CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) -@@ -4018,7 +4307,7 @@ +@@ -4018,7 +4310,7 @@ NM=$lt_NM # A symbol stripping program @@ -2476,7 +2446,7 @@ # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD -@@ -4049,7 +4338,7 @@ +@@ -4049,7 +4341,7 @@ libext="$libext" # Shared library suffix (normally ".so"). @@ -2485,7 +2455,7 @@ # Executable file suffix (normally ""). exeext="$exeext" -@@ -4064,7 +4353,7 @@ +@@ -4064,7 +4356,7 @@ # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) @@ -2494,7 +2464,7 @@ need_locks=$lt_need_locks # Do we need the lib prefix for modules? -@@ -4293,7 +4582,10 @@ +@@ -4293,7 +4585,10 @@ # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. @@ -2506,7 +2476,7 @@ fi ])# AC_LIBTOOL_CONFIG -@@ -4335,9 +4627,6 @@ +@@ -4335,9 +4630,6 @@ # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' @@ -2516,7 +2486,7 @@ # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" -@@ -4359,14 +4648,30 @@ +@@ -4359,14 +4651,30 @@ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; @@ -2549,7 +2519,7 @@ ;; sysv4) symcode='[[DFNSTU]]' -@@ -4384,14 +4689,17 @@ +@@ -4384,14 +4692,17 @@ # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) @@ -2569,7 +2539,7 @@ # Check to see that the pipe works correctly. pipe_works=no -@@ -4547,6 +4855,10 @@ +@@ -4547,6 +4858,10 @@ # DJGPP does not support shared libraries at all _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; @@ -2580,7 +2550,7 @@ sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic -@@ -4555,7 +4867,7 @@ +@@ -4555,7 +4870,7 @@ hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. @@ -2589,7 +2559,7 @@ hppa*64*|ia64*) ;; *) -@@ -4580,18 +4892,28 @@ +@@ -4580,18 +4895,28 @@ ;; chorus*) case $cc_basename in @@ -2621,7 +2591,7 @@ # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; -@@ -4599,22 +4921,22 @@ +@@ -4599,22 +4924,22 @@ ;; esac ;; @@ -2650,7 +2620,7 @@ hppa*64*|ia64*) # +Z the default ;; -@@ -4627,9 +4949,13 @@ +@@ -4627,9 +4952,13 @@ ;; esac ;; @@ -2665,7 +2635,7 @@ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. -@@ -4640,18 +4966,24 @@ +@@ -4640,18 +4969,24 @@ ;; linux*) case $cc_basename in @@ -2694,7 +2664,7 @@ # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. -@@ -4668,7 +5000,7 @@ +@@ -4668,7 +5003,7 @@ ;; mvs*) case $cc_basename in @@ -2703,7 +2673,7 @@ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) -@@ -4679,14 +5011,14 @@ +@@ -4679,14 +5014,14 @@ ;; osf3* | osf4* | osf5*) case $cc_basename in @@ -2721,7 +2691,7 @@ # Digital/Compaq C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha -@@ -4700,24 +5032,15 @@ +@@ -4700,24 +5035,15 @@ ;; psos*) ;; @@ -2748,7 +2718,7 @@ # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; -@@ -4727,12 +5050,12 @@ +@@ -4727,12 +5053,12 @@ ;; sunos4*) case $cc_basename in @@ -2763,7 +2733,7 @@ # Lucid _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; -@@ -4742,7 +5065,7 @@ +@@ -4742,7 +5068,7 @@ ;; tandem*) case $cc_basename in @@ -2772,7 +2742,7 @@ # NonStop-UX NCC 3.20 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; -@@ -4750,7 +5073,14 @@ +@@ -4750,7 +5076,14 @@ ;; esac ;; @@ -2788,7 +2758,7 @@ ;; vxworks*) ;; -@@ -4797,6 +5127,11 @@ +@@ -4797,6 +5130,11 @@ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; @@ -2800,7 +2770,7 @@ msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. -@@ -4813,7 +5148,7 @@ +@@ -4813,7 +5151,7 @@ hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. @@ -2809,7 +2779,7 @@ hppa*64*|ia64*) # +Z the default ;; -@@ -4839,6 +5174,16 @@ +@@ -4839,6 +5177,16 @@ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; @@ -2826,7 +2796,7 @@ mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being -@@ -4850,7 +5195,7 @@ +@@ -4850,7 +5198,7 @@ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. @@ -2835,7 +2805,7 @@ hppa*64*|ia64*) # +Z the default ;; -@@ -4874,12 +5219,19 @@ +@@ -4874,12 +5222,19 @@ ;; linux*) @@ -2856,7 +2826,7 @@ ccc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. -@@ -4894,15 +5246,15 @@ +@@ -4894,15 +5249,15 @@ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; @@ -2878,7 +2848,7 @@ ;; sunos4*) -@@ -4911,7 +5263,7 @@ +@@ -4911,7 +5266,7 @@ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; @@ -2887,7 +2857,7 @@ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -@@ -4924,6 +5276,17 @@ +@@ -4924,6 +5279,17 @@ fi ;; @@ -2905,7 +2875,7 @@ uts4*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -@@ -4951,7 +5314,7 @@ +@@ -4951,7 +5317,7 @@ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi @@ -2914,7 +2884,7 @@ # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= -@@ -4960,6 +5323,16 @@ +@@ -4960,6 +5326,16 @@ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" ;; esac @@ -2931,7 +2901,7 @@ ]) -@@ -4984,7 +5357,7 @@ +@@ -4984,7 +5360,7 @@ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw*) @@ -2940,7 +2910,7 @@ ;; *) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -@@ -5010,7 +5383,7 @@ +@@ -5010,7 +5386,7 @@ _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= @@ -2949,7 +2919,7 @@ _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* -@@ -5027,7 +5400,8 @@ +@@ -5027,7 +5403,8 @@ # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= @@ -2959,7 +2929,7 @@ case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time -@@ -5037,6 +5411,10 @@ +@@ -5037,6 +5414,10 @@ with_gnu_ld=no fi ;; @@ -2970,7 +2940,7 @@ openbsd*) with_gnu_ld=no ;; -@@ -5047,6 +5425,27 @@ +@@ -5047,6 +5428,27 @@ # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' @@ -2998,7 +2968,7 @@ # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) -@@ -5084,7 +5483,7 @@ +@@ -5084,7 +5486,7 @@ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach <jrb3@best.com> says some releases of gcc # support --undefined. This deserves some investigation. FIXME @@ -3007,7 +2977,7 @@ else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi -@@ -5094,13 +5493,13 @@ +@@ -5094,13 +5496,13 @@ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' @@ -3024,7 +2994,7 @@ # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then -@@ -5109,9 +5508,55 @@ +@@ -5109,9 +5511,55 @@ echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ @@ -3082,7 +3052,7 @@ fi ;; -@@ -5120,12 +5565,12 @@ +@@ -5120,12 +5568,12 @@ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else @@ -3098,7 +3068,7 @@ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <<EOF 1>&2 -@@ -5139,13 +5584,40 @@ +@@ -5139,13 +5587,40 @@ EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then @@ -3141,7 +3111,7 @@ sunos4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= -@@ -5155,24 +5627,19 @@ +@@ -5155,24 +5630,19 @@ *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then @@ -3173,7 +3143,7 @@ fi else # PORTME fill in a description of your system's linker (not GNU ld) -@@ -5184,7 +5651,7 @@ +@@ -5184,7 +5654,7 @@ # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes @@ -3182,7 +3152,7 @@ # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported -@@ -5206,9 +5673,21 @@ +@@ -5206,9 +5676,21 @@ else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi @@ -3206,7 +3176,7 @@ exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi -@@ -5225,7 +5704,7 @@ +@@ -5225,7 +5707,7 @@ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes; then @@ -3215,7 +3185,7 @@ # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` -@@ -5244,8 +5723,12 @@ +@@ -5244,8 +5726,12 @@ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi @@ -3228,7 +3198,7 @@ else # not using gcc if test "$host_cpu" = ia64; then -@@ -5253,30 +5736,30 @@ +@@ -5253,30 +5739,30 @@ # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else @@ -3270,7 +3240,7 @@ else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX -@@ -5285,13 +5768,11 @@ +@@ -5285,13 +5771,11 @@ # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' @@ -3287,7 +3257,7 @@ fi fi ;; -@@ -5304,7 +5785,7 @@ +@@ -5304,7 +5788,7 @@ _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; @@ -3296,7 +3266,7 @@ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; -@@ -5314,69 +5795,69 @@ +@@ -5314,69 +5798,69 @@ # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' @@ -3412,7 +3382,7 @@ ;; dgux*) -@@ -5409,8 +5890,8 @@ +@@ -5409,8 +5893,8 @@ ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. @@ -3423,7 +3393,7 @@ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -@@ -5418,7 +5899,7 @@ +@@ -5418,7 +5902,7 @@ hpux9*) if test "$GCC" = yes; then @@ -3432,7 +3402,7 @@ else _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi -@@ -5432,47 +5913,62 @@ +@@ -5432,47 +5916,62 @@ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; @@ -3519,7 +3489,7 @@ _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -@@ -5486,7 +5982,7 @@ +@@ -5486,7 +5985,7 @@ irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then @@ -3528,7 +3498,7 @@ else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' -@@ -5519,7 +6015,8 @@ +@@ -5519,7 +6018,8 @@ _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then @@ -3538,7 +3508,7 @@ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else -@@ -5529,7 +6026,7 @@ +@@ -5529,7 +6029,7 @@ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) @@ -3547,7 +3517,7 @@ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac -@@ -5540,14 +6037,14 @@ +@@ -5540,14 +6040,14 @@ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported @@ -3564,7 +3534,7 @@ else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -@@ -5559,13 +6056,13 @@ +@@ -5559,13 +6059,13 @@ osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' @@ -3580,7 +3550,7 @@ # Both c and cxx compiler support -rpath directly _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' -@@ -5573,21 +6070,15 @@ +@@ -5573,21 +6073,15 @@ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; @@ -3606,7 +3576,7 @@ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' -@@ -5596,8 +6087,18 @@ +@@ -5596,8 +6090,18 @@ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; @@ -3627,7 +3597,7 @@ esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; -@@ -5606,7 +6107,7 @@ +@@ -5606,7 +6110,7 @@ if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. @@ -3636,7 +3606,7 @@ else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi -@@ -5654,36 +6155,45 @@ +@@ -5654,36 +6158,45 @@ fi ;; @@ -3703,7 +3673,7 @@ ;; uts4*) -@@ -5701,11 +6211,6 @@ +@@ -5701,11 +6214,6 @@ AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no @@ -3715,7 +3685,7 @@ # # Do we need to explicitly link libc? # -@@ -5726,13 +6231,14 @@ +@@ -5726,13 +6234,14 @@ AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext @@ -3731,7 +3701,7 @@ compiler_flags=-v linker_flags=-v verstring= -@@ -5860,7 +6366,7 @@ +@@ -5860,7 +6369,7 @@ # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do @@ -3740,4043 +3710,3 @@ cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in ---- parts/appwizard/common/admin/ltmain.sh Sun Oct 1 19:29:12 2006 -+++ parts/appwizard/common/admin/ltmain.sh Sun Dec 18 23:14:54 2005 -@@ -1,7 +1,7 @@ - # ltmain.sh - Provide generalized library-building support services. - # NOTE: Changing this file will not affect anything until you rerun configure. - # --# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003 -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 - # Free Software Foundation, Inc. - # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 - # -@@ -24,6 +24,34 @@ - # configuration script generated by Autoconf, you may include it under - # the same distribution terms that you use for the rest of that program. - -+basename="s,^.*/,,g" -+ -+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -+# is ksh but when the shell is invoked as "sh" and the current value of -+# the _XPG environment variable is not equal to 1 (one), the special -+# positional parameter $0, within a function call, is the name of the -+# function. -+progpath="$0" -+ -+# The name of this program: -+progname=`echo "$progpath" | $SED $basename` -+modename="$progname" -+ -+# Global variables: -+EXIT_SUCCESS=0 -+EXIT_FAILURE=1 -+ -+PROGRAM=ltmain.sh -+PACKAGE=libtool -+VERSION=1.5.22 -+TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)" -+ -+# See if we are running on zsh, and set the options which allow our -+# commands through without removal of \ escapes. -+if test -n "${ZSH_VERSION+set}" ; then -+ setopt NO_GLOB_SUBST -+fi -+ - # Check that we have a working $echo. - if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. -@@ -36,7 +64,7 @@ - : - else - # Restart under the correct shell, and then maybe $echo will work. -- exec $SHELL "$0" --no-reexec ${1+"$@"} -+ exec $SHELL "$progpath" --no-reexec ${1+"$@"} - fi - - if test "X$1" = X--fallback-echo; then -@@ -45,19 +73,9 @@ - cat <<EOF - $* - EOF -- exit 0 -+ exit $EXIT_SUCCESS - fi - --# The name of this program. --progname=`$echo "$0" | ${SED} 's%^.*/%%'` --modename="$progname" -- --# Constants. --PROGRAM=ltmain.sh --PACKAGE=libtool --VERSION=1.5a --TIMESTAMP=" (1.1240 2003/06/26 06:55:19)" -- - default_mode= - help="Try \`$progname --help' for more information." - magic="%%%MAGIC variable%%%" -@@ -70,14 +88,15 @@ - Xsed="${SED}"' -e 1s/^X//' - sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' - # test EBCDIC or ASCII --case `echo A|tr A '\301'` in -- A) # EBCDIC based system -- SP2NL="tr '\100' '\n'" -- NL2SP="tr '\r\n' '\100\100'" -+case `echo X|tr X '\101'` in -+ A) # ASCII based system -+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr -+ SP2NL='tr \040 \012' -+ NL2SP='tr \015\012 \040\040' - ;; -- *) # Assume ASCII based system -- SP2NL="tr '\040' '\012'" -- NL2SP="tr '\015\012' '\040\040'" -+ *) # EBCDIC based system -+ SP2NL='tr \100 \n' -+ NL2SP='tr \r\n \100\100' - ;; - esac - -@@ -94,12 +113,14 @@ - fi - - # Make sure IFS has a sensible default --: ${IFS=" "} -+lt_nl=' -+' -+IFS=" $lt_nl" - - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - $echo "$modename: not configured to build any kind of library" 1>&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Global variables. -@@ -111,6 +132,8 @@ - show="$echo" - show_help= - execute_dlfiles= -+duplicate_deps=no -+preserve_args= - lo2o="s/\\.lo\$/.${objext}/" - o2lo="s/\\.${objext}\$/.lo/" - -@@ -118,10 +141,51 @@ - # Shell function definitions: - # This seems to be the best place for them - -+# func_mktempdir [string] -+# Make a temporary directory that won't clash with other running -+# libtool processes, and avoids race conditions if possible. If -+# given, STRING is the basename for that directory. -+func_mktempdir () -+{ -+ my_template="${TMPDIR-/tmp}/${1-$progname}" -+ -+ if test "$run" = ":"; then -+ # Return a directory name, but don't create it in dry-run mode -+ my_tmpdir="${my_template}-$$" -+ else -+ -+ # If mktemp works, use that first and foremost -+ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` -+ -+ if test ! -d "$my_tmpdir"; then -+ # Failing that, at least try and use $RANDOM to avoid a race -+ my_tmpdir="${my_template}-${RANDOM-0}$$" -+ -+ save_mktempdir_umask=`umask` -+ umask 0077 -+ $mkdir "$my_tmpdir" -+ umask $save_mktempdir_umask -+ fi -+ -+ # If we're not in dry-run mode, bomb out on failure -+ test -d "$my_tmpdir" || { -+ $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 -+ exit $EXIT_FAILURE -+ } -+ fi -+ -+ $echo "X$my_tmpdir" | $Xsed -+} -+ -+ -+# func_win32_libid arg -+# return the library type of file 'arg' -+# - # Need a lot of goo to handle *both* DLLs and import libs - # Has to be a shell function in order to 'eat' the argument - # that is supplied when $file_magic_command is called. --win32_libid () { -+func_win32_libid () -+{ - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in -@@ -130,17 +194,16 @@ - ;; - *ar\ archive*) # could be an import, or static - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ -- grep -E 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then -+ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then - win32_nmres=`eval $NM -f posix -A $1 | \ -- sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` -- if test "X$win32_nmres" = "Ximport" ; then -- win32_libid_type="x86 archive import" -- else -- win32_libid_type="x86 archive static" -- fi -+ $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'` -+ case $win32_nmres in -+ import*) win32_libid_type="x86 archive import";; -+ *) win32_libid_type="x86 archive static";; -+ esac - fi - ;; -- *DLL*) -+ *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... -@@ -154,9 +217,181 @@ - $echo $win32_libid_type - } - -+ -+# func_infer_tag arg -+# Infer tagged configuration to use if any are available and -+# if one wasn't chosen via the "--tag" command line option. -+# Only attempt this if the compiler in the base compile -+# command doesn't match the default compiler. -+# arg is usually of the form 'gcc ...' -+func_infer_tag () -+{ -+ if test -n "$available_tags" && test -z "$tagname"; then -+ CC_quoted= -+ for arg in $CC; do -+ case $arg in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ arg="\"$arg\"" -+ ;; -+ esac -+ CC_quoted="$CC_quoted $arg" -+ done -+ case $@ in -+ # Blanks in the command may have been stripped by the calling shell, -+ # but not from the CC environment variable when configure was run. -+ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; -+ # Blanks at the start of $base_compile will cause this to fail -+ # if we don't check for them as well. -+ *) -+ for z in $available_tags; do -+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then -+ # Evaluate the configuration. -+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" -+ CC_quoted= -+ for arg in $CC; do -+ # Double-quote args containing other shell metacharacters. -+ case $arg in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ arg="\"$arg\"" -+ ;; -+ esac -+ CC_quoted="$CC_quoted $arg" -+ done -+ case "$@ " in -+ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) -+ # The compiler in the base compile command matches -+ # the one in the tagged configuration. -+ # Assume this is the tagged configuration we want. -+ tagname=$z -+ break -+ ;; -+ esac -+ fi -+ done -+ # If $tagname still isn't set, then no tagged configuration -+ # was found and let the user know that the "--tag" command -+ # line option must be used. -+ if test -z "$tagname"; then -+ $echo "$modename: unable to infer tagged configuration" -+ $echo "$modename: specify a tag with \`--tag'" 1>&2 -+ exit $EXIT_FAILURE -+# else -+# $echo "$modename: using $tagname tagged configuration" -+ fi -+ ;; -+ esac -+ fi -+} -+ -+ -+# func_extract_an_archive dir oldlib -+func_extract_an_archive () -+{ -+ f_ex_an_ar_dir="$1"; shift -+ f_ex_an_ar_oldlib="$1" -+ -+ $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" -+ $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? -+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then -+ : -+ else -+ $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+} -+ -+# func_extract_archives gentop oldlib ... -+func_extract_archives () -+{ -+ my_gentop="$1"; shift -+ my_oldlibs=${1+"$@"} -+ my_oldobjs="" -+ my_xlib="" -+ my_xabs="" -+ my_xdir="" -+ my_status="" -+ -+ $show "${rm}r $my_gentop" -+ $run ${rm}r "$my_gentop" -+ $show "$mkdir $my_gentop" -+ $run $mkdir "$my_gentop" -+ my_status=$? -+ if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then -+ exit $my_status -+ fi -+ -+ for my_xlib in $my_oldlibs; do -+ # Extract the objects. -+ case $my_xlib in -+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; -+ *) my_xabs=`pwd`"/$my_xlib" ;; -+ esac -+ my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` -+ my_xdir="$my_gentop/$my_xlib" -+ -+ $show "${rm}r $my_xdir" -+ $run ${rm}r "$my_xdir" -+ $show "$mkdir $my_xdir" -+ $run $mkdir "$my_xdir" -+ exit_status=$? -+ if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then -+ exit $exit_status -+ fi -+ case $host in -+ *-darwin*) -+ $show "Extracting $my_xabs" -+ # Do not bother doing anything if just a dry run -+ if test -z "$run"; then -+ darwin_orig_dir=`pwd` -+ cd $my_xdir || exit $? -+ darwin_archive=$my_xabs -+ darwin_curdir=`pwd` -+ darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` -+ darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` -+ if test -n "$darwin_arches"; then -+ darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` -+ darwin_arch= -+ $show "$darwin_base_archive has multiple architectures $darwin_arches" -+ for darwin_arch in $darwin_arches ; do -+ mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" -+ lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" -+ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" -+ func_extract_an_archive "`pwd`" "${darwin_base_archive}" -+ cd "$darwin_curdir" -+ $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" -+ done # $darwin_arches -+ ## Okay now we have a bunch of thin objects, gotta fatten them up :) -+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` -+ darwin_file= -+ darwin_files= -+ for darwin_file in $darwin_filelist; do -+ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` -+ lipo -create -output "$darwin_file" $darwin_files -+ done # $darwin_filelist -+ ${rm}r unfat-$$ -+ cd "$darwin_orig_dir" -+ else -+ cd "$darwin_orig_dir" -+ func_extract_an_archive "$my_xdir" "$my_xabs" -+ fi # $darwin_arches -+ fi # $run -+ ;; -+ *) -+ func_extract_an_archive "$my_xdir" "$my_xabs" -+ ;; -+ esac -+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` -+ done -+ func_extract_archives_result="$my_oldobjs" -+} - # End of Shell function definitions - ##################################### - -+# Darwin sucks -+eval std_shrext=\"$shrext_cmds\" -+ -+disable_libs=no -+ - # Parse our command line options once, thoroughly. - while test "$#" -gt 0 - do -@@ -176,12 +411,13 @@ - ;; - tag) - tagname="$arg" -+ preserve_args="${preserve_args}=$arg" - - # Check whether tagname contains only valid characters - case $tagname in - *[!-_A-Za-z0-9,/]*) - $echo "$progname: invalid tag name: $tagname" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - -@@ -191,10 +427,10 @@ - # not specially marked. - ;; - *) -- if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then -+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then - taglist="$taglist $tagname" - # Evaluate the configuration. -- eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`" -+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" - else - $echo "$progname: ignoring unknown tag $tagname" 1>&2 - fi -@@ -220,24 +456,25 @@ - --version) - $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" - $echo -- $echo "Copyright (C) 2003 Free Software Foundation, Inc." -+ $echo "Copyright (C) 2005 Free Software Foundation, Inc." - $echo "This is free software; see the source for copying conditions. There is NO" - $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." -- exit 0 -+ exit $? - ;; - - --config) -- ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 -+ ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath - # Now print the configurations for the tags. - for tagname in $taglist; do -- ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0" -+ ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" - done -- exit 0 -+ exit $? - ;; - - --debug) - $echo "$progname: enabling shell trace mode" - set -x -+ preserve_args="$preserve_args $arg" - ;; - - --dry-run | -n) -@@ -256,7 +493,7 @@ - else - $echo "disable static libraries" - fi -- exit 0 -+ exit $? - ;; - - --finish) mode="finish" ;; -@@ -268,13 +505,19 @@ - - --quiet | --silent) - show=: -+ preserve_args="$preserve_args $arg" - ;; - -- --tag) prevopt="--tag" prev=tag ;; -+ --tag) -+ prevopt="--tag" -+ prev=tag -+ preserve_args="$preserve_args --tag" -+ ;; - --tag=*) - set tag "$optarg" ${1+"$@"} - shift - prev=tag -+ preserve_args="$preserve_args --tag" - ;; - - -dlopen) -@@ -285,7 +528,7 @@ - -*) - $echo "$modename: unrecognized option \`$arg'" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - - *) -@@ -298,9 +541,21 @@ - if test -n "$prevopt"; then - $echo "$modename: option \`$prevopt' requires an argument" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - -+case $disable_libs in -+no) -+ ;; -+shared) -+ build_libtool_libs=no -+ build_old_libs=yes -+ ;; -+static) -+ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -+ ;; -+esac -+ - # If this variable is set in any of the actions, the command in it - # will be execed at the end. This prevents here-documents from being - # left over by shells. -@@ -311,7 +566,7 @@ - # Infer the operation mode. - if test -z "$mode"; then - $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 -- $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2 -+ $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 - case $nonopt in - *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) - mode=link -@@ -354,7 +609,7 @@ - if test -n "$execute_dlfiles" && test "$mode" != execute; then - $echo "$modename: unrecognized option \`-dlopen'" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. -@@ -369,13 +624,15 @@ - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" -+ suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= -+ later= - - for arg - do -- case "$arg_mode" in -+ case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg="$arg" -@@ -394,24 +651,19 @@ - -o) - if test -n "$libobj" ; then - $echo "$modename: you cannot specify \`-o' more than once" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - arg_mode=target - continue - ;; - -- -static) -- build_old_libs=yes -+ -static | -prefer-pic | -prefer-non-pic) -+ later="$later $arg" - continue - ;; - -- -prefer-pic) -- pic_mode=yes -- continue -- ;; -- -- -prefer-non-pic) -- pic_mode=no -+ -no-suppress) -+ suppress_opt=no - continue - ;; - -@@ -424,7 +676,7 @@ - args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` - lastarg= - save_ifs="$IFS"; IFS=',' -- for arg in $args; do -+ for arg in $args; do - IFS="$save_ifs" - - # Double-quote args containing other shell metacharacters. -@@ -462,7 +714,10 @@ - case $lastarg in - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly -- # in scan sets, so we specify it separately. -+ # in scan sets, and some SunOS ksh mistreat backslash-escaping -+ # in scan sets (worked around with variable expansion), -+ # and furthermore cannot handle '|' '&' '(' ')' in scan sets -+ # at all, so we specify them separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - lastarg="\"$lastarg\"" - ;; -@@ -474,11 +729,11 @@ - case $arg_mode in - arg) - $echo "$modename: you must specify an argument for -Xcompile" -- exit 1 -+ exit $EXIT_FAILURE - ;; - target) - $echo "$modename: you must specify a target with \`-o'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - *) - # Get the name of the library object. -@@ -511,51 +766,39 @@ - *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; - *) - $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - -- # Infer tagged configuration to use if any are available and -- # if one wasn't chosen via the "--tag" command line option. -- # Only attempt this if the compiler in the base compile -- # command doesn't match the default compiler. -- if test -n "$available_tags" && test -z "$tagname"; then -- case $base_compile in -- # Blanks in the command may have been stripped by the calling shell, -- # but not from the CC environment variable when configure was run. -- " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "*) ;; -- # Blanks at the start of $base_compile will cause this to fail -- # if we don't check for them as well. -- *) -- for z in $available_tags; do -- if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then -- # Evaluate the configuration. -- eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`" -- case "$base_compile " in -- "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) -- # The compiler in the base compile command matches -- # the one in the tagged configuration. -- # Assume this is the tagged configuration we want. -- tagname=$z -- break -- ;; -- esac -- fi -- done -- # If $tagname still isn't set, then no tagged configuration -- # was found and let the user know that the "--tag" command -- # line option must be used. -- if test -z "$tagname"; then -- $echo "$modename: unable to infer tagged configuration" -- $echo "$modename: specify a tag with \`--tag'" 1>&2 -- exit 1 --# else --# $echo "$modename: using $tagname tagged configuration" -- fi -+ func_infer_tag $base_compile -+ -+ for arg in $later; do -+ case $arg in -+ -static) -+ build_old_libs=yes -+ continue -+ ;; -+ -+ -prefer-pic) -+ pic_mode=yes -+ continue -+ ;; -+ -+ -prefer-non-pic) -+ pic_mode=no -+ continue - ;; - esac -- fi -+ done - -+ qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` -+ case $qlibobj in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ qlibobj="\"$qlibobj\"" ;; -+ esac -+ test "X$libobj" != "X$qlibobj" \ -+ && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ -+ && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." - objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` - xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$obj"; then -@@ -568,7 +811,7 @@ - if test -z "$base_compile"; then - $echo "$modename: you must specify a compilation command" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Delete any leftover library objects. -@@ -579,7 +822,7 @@ - fi - - $run $rm $removelist -- trap "$run $rm $removelist; exit 1" 1 2 15 -+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in -@@ -598,7 +841,7 @@ - output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - removelist="$removelist $output_obj $lockfile" -- trap "$run $rm $removelist; exit 1" 1 2 15 -+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 - else - output_obj= - need_locks=no -@@ -608,7 +851,7 @@ - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then -- until $run ln "$0" "$lockfile" 2>/dev/null; do -+ until $run ln "$progpath" "$lockfile" 2>/dev/null; do - $show "Waiting for $lockfile to be removed" - sleep 2 - done -@@ -626,14 +869,19 @@ - compiler." - - $run $rm $removelist -- exit 1 -+ exit $EXIT_FAILURE - fi -- $echo $srcfile > "$lockfile" -+ $echo "$srcfile" > "$lockfile" - fi - - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi -+ qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` -+ case $qsrcfile in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ qsrcfile="\"$qsrcfile\"" ;; -+ esac - - $run $rm "$libobj" "${libobj}T" - -@@ -655,18 +903,18 @@ - fbsd_hideous_sh_bug=$base_compile - - if test "$pic_mode" != no; then -- command="$base_compile $srcfile $pic_flag" -+ command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code -- command="$base_compile $srcfile" -+ command="$base_compile $qsrcfile" - fi - - if test ! -d "${xdir}$objdir"; then - $show "$mkdir ${xdir}$objdir" - $run $mkdir ${xdir}$objdir -- status=$? -- if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then -- exit $status -+ exit_status=$? -+ if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then -+ exit $exit_status - fi - fi - -@@ -681,7 +929,7 @@ - if $run eval "$command"; then : - else - test -n "$output_obj" && $run $rm $removelist -- exit 1 -+ exit $EXIT_FAILURE - fi - - if test "$need_locks" = warn && -@@ -701,7 +949,7 @@ - compiler." - - $run $rm $removelist -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one -@@ -722,7 +970,9 @@ - EOF - - # Allow error messages only from the first compilation. -- suppress_output=' >/dev/null 2>&1' -+ if test "$suppress_opt" = yes; then -+ suppress_output=' >/dev/null 2>&1' -+ fi - else - # No PIC object so indicate it doesn't exist in the libtool - # object file. -@@ -736,9 +986,9 @@ - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then - # Don't build PIC code -- command="$base_compile $srcfile" -+ command="$base_compile $qsrcfile" - else -- command="$base_compile $srcfile $pic_flag" -+ command="$base_compile $qsrcfile $pic_flag" - fi - if test "$compiler_c_o" = yes; then - command="$command -o $obj" -@@ -751,7 +1001,7 @@ - if $run eval "$command"; then : - else - $run $rm $removelist -- exit 1 -+ exit $EXIT_FAILURE - fi - - if test "$need_locks" = warn && -@@ -771,7 +1021,7 @@ - compiler." - - $run $rm $removelist -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Just move the object if needed -@@ -809,7 +1059,7 @@ - $run $rm "$lockfile" - fi - -- exit 0 -+ exit $EXIT_SUCCESS - ;; - - # libtool link mode -@@ -835,7 +1085,7 @@ - ;; - esac - libtool_args="$nonopt" -- base_compile="$nonopt" -+ base_compile="$nonopt $@" - compile_command="$nonopt" - finalize_command="$nonopt" - -@@ -847,7 +1097,6 @@ - old_convenience= - deplibs= - old_deplibs= -- add_flags= - compiler_flags= - linker_flags= - dllsearchpath= -@@ -868,6 +1117,8 @@ - no_install=no - objs= - non_pic_objects= -+ notinst_path= # paths that contain not-installed libtool libraries -+ precious_files_regex= - prefer_static_libs=no - preload=no - prev= -@@ -881,6 +1132,8 @@ - vinfo= - vinfo_number=no - -+ func_infer_tag $base_compile -+ - # We need to know -static, to get the right output filenames. - for arg - do -@@ -893,14 +1146,15 @@ - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi -+ prefer_static_libs=yes - else - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi -+ prefer_static_libs=built - fi - build_libtool_libs=no - build_old_libs=yes -- prefer_static_libs=yes - break - ;; - esac -@@ -912,7 +1166,6 @@ - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" -- base_compile="$base_compile $arg" - shift - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -@@ -976,7 +1229,7 @@ - export_symbols="$arg" - if test ! -f "$arg"; then - $echo "$modename: symbol file \`$arg' does not exist" -- exit 1 -+ exit $EXIT_FAILURE - fi - prev= - continue -@@ -991,6 +1244,11 @@ - prev= - continue - ;; -+ precious_regex) -+ precious_files_regex="$arg" -+ prev= -+ continue -+ ;; - release) - release="-$arg" - prev= -@@ -1023,7 +1281,7 @@ - test "$pic_object" = none && \ - test "$non_pic_object" = none; then - $echo "$modename: cannot find name of object for \`$arg'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Extract subdirectory from the argument. -@@ -1071,12 +1329,17 @@ - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi -+ else -+ # If the PIC object exists, use it instead. -+ # $xdir was prepended to $pic_object above. -+ non_pic_object="$pic_object" -+ non_pic_objects="$non_pic_objects $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if test -z "$run"; then - $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - else - # Dry-run case. - -@@ -1097,7 +1360,7 @@ - done - else - $echo "$modename: link input file \`$save_arg' does not exist" -- exit 1 -+ exit $EXIT_FAILURE - fi - arg=$save_arg - prev= -@@ -1109,7 +1372,7 @@ - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - if test "$prev" = rpath; then -@@ -1149,16 +1412,15 @@ - finalize_command="$finalize_command $qarg" - continue - ;; -- framework) -- case $host in -- *-*-darwin*) -- case "$deplibs " in -- *" $qarg.ltframework "*) ;; -- *) deplibs="$deplibs $qarg.ltframework" # this is fixed later -- ;; -- esac -- ;; -- esac -+ shrext) -+ shrext_cmds="$arg" -+ prev= -+ continue -+ ;; -+ darwin_framework|darwin_framework_skip) -+ test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" -+ compile_command="$compile_command $arg" -+ finalize_command="$finalize_command $arg" - prev= - continue - ;; -@@ -1210,7 +1472,7 @@ - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: more than one -exported-symbols argument is not allowed" -- exit 1 -+ exit $EXIT_FAILURE - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms -@@ -1220,6 +1482,18 @@ - continue - ;; - -+ -framework|-arch|-isysroot) -+ case " $CC " in -+ *" ${arg} ${1} "* | *" ${arg} ${1} "*) -+ prev=darwin_framework_skip ;; -+ *) compiler_flags="$compiler_flags $arg" -+ prev=darwin_framework ;; -+ esac -+ compile_command="$compile_command $arg" -+ finalize_command="$finalize_command $arg" -+ continue -+ ;; -+ - -inst-prefix-dir) - prev=inst_prefix - continue -@@ -1246,7 +1520,8 @@ - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 -- exit 1 -+ absdir="$dir" -+ notinst_path="$notinst_path $dir" - fi - dir="$absdir" - ;; -@@ -1260,10 +1535,15 @@ - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) -+ testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - *) dllsearchpath="$dllsearchpath:$dir";; - esac -+ case :$dllsearchpath: in -+ *":$testbindir:"*) ;; -+ *) dllsearchpath="$dllsearchpath:$testbindir";; -+ esac - ;; - esac - continue -@@ -1272,26 +1552,35 @@ - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in -- *-*-cygwin* | *-*-pw32* | *-*-beos*) -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) - # These systems don't actually have a C or math library (as such) - continue - ;; -- *-*-mingw* | *-*-os2*) -+ *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; -- *-*-openbsd* | *-*-freebsd*) -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework -- deplibs="$deplibs System.ltframework" -+ deplibs="$deplibs -framework System" - continue -+ ;; -+ *-*-sco3.2v5* | *-*-sco5v6*) -+ # Causes problems with __ctype -+ test "X$arg" = "X-lc" && continue -+ ;; -+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) -+ # Compiler inserts libc in the correct place for threads to work -+ test "X$arg" = "X-lc" && continue -+ ;; - esac - elif test "X$arg" = "X-lc_r"; then - case $host in -- *-*-openbsd*) -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; -@@ -1301,18 +1590,41 @@ - continue - ;; - -+ # Tru64 UNIX uses -model [arg] to determine the layout of C++ -+ # classes, name mangling, and exception handling. -+ -model) -+ compile_command="$compile_command $arg" -+ compiler_flags="$compiler_flags $arg" -+ finalize_command="$finalize_command $arg" -+ prev=xcompiler -+ continue -+ ;; -+ -+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) -+ compiler_flags="$compiler_flags $arg" -+ compile_command="$compile_command $arg" -+ finalize_command="$finalize_command $arg" -+ continue -+ ;; -+ - -module) - module=yes - continue - ;; - -- # gcc -m* arguments should be passed to the linker via $compiler_flags -- # in order to pass architecture information to the linker -- # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo -- # but this is not reliable with gcc because gcc may use -mfoo to -- # select a different linker, different libraries, etc, while -- # -Wl,-mfoo simply passes -mfoo to the linker. -- -m*) -+ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler -+ # -r[0-9][0-9]* specifies the processor on the SGI compiler -+ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler -+ # +DA*, +DD* enable 64-bit mode on the HP compiler -+ # -q* pass through compiler args for the IBM compiler -+ # -m* pass through architecture-specific compiler args for GCC -+ # -m*, -t[45]*, -txscale* pass through architecture-specific -+ # compiler args for GCC -+ # -pg pass through profiling flag for GCC -+ # @file GCC response files -+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \ -+ -t[45]*|-txscale*|@*) -+ - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` -@@ -1323,9 +1635,7 @@ - esac - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" -- if test "$with_gcc" = "yes" ; then -- compiler_flags="$compiler_flags $arg" -- fi -+ compiler_flags="$compiler_flags $arg" - continue - ;; - -@@ -1365,6 +1675,11 @@ - - -o) prev=output ;; - -+ -precious-files-regex) -+ prev=precious_regex -+ continue -+ ;; -+ - -release) - prev=release - continue -@@ -1387,7 +1702,7 @@ - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - case "$xrpath " in -@@ -1473,11 +1788,6 @@ - continue - ;; - -- -framework) -- prev=framework -- continue -- ;; -- - # Some other compiler flag. - -* | +*) - # Unknown arguments in both finalize_command and compile_command need -@@ -1488,7 +1798,6 @@ - arg="\"$arg\"" - ;; - esac -- add_flags="$add_flags $arg" - ;; - - *.$objext) -@@ -1516,7 +1825,7 @@ - test "$pic_object" = none && \ - test "$non_pic_object" = none; then - $echo "$modename: cannot find name of object for \`$arg'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Extract subdirectory from the argument. -@@ -1564,12 +1873,17 @@ - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi -+ else -+ # If the PIC object exists, use it instead. -+ # $xdir was prepended to $pic_object above. -+ non_pic_object="$pic_object" -+ non_pic_objects="$non_pic_objects $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if test -z "$run"; then - $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - else - # Dry-run case. - -@@ -1623,7 +1937,6 @@ - arg="\"$arg\"" - ;; - esac -- add_flags="$add_flags $arg" - ;; - esac # arg - -@@ -1637,48 +1950,7 @@ - if test -n "$prev"; then - $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 - $echo "$help" 1>&2 -- exit 1 -- fi -- -- # Infer tagged configuration to use if any are available and -- # if one wasn't chosen via the "--tag" command line option. -- # Only attempt this if the compiler in the base link -- # command doesn't match the default compiler. -- if test -n "$available_tags" && test -z "$tagname"; then -- case $base_compile in -- # Blanks in the command may have been stripped by the calling shell, -- # but not from the CC environment variable when configure was run. -- "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) ;; -- # Blanks at the start of $base_compile will cause this to fail -- # if we don't check for them as well. -- *) -- for z in $available_tags; do -- if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then -- # Evaluate the configuration. -- eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`" -- case $base_compile in -- "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) -- # The compiler in $compile_command matches -- # the one in the tagged configuration. -- # Assume this is the tagged configuration we want. -- tagname=$z -- break -- ;; -- esac -- fi -- done -- # If $tagname still isn't set, then no tagged configuration -- # was found and let the user know that the "--tag" command -- # line option must be used. -- if test -z "$tagname"; then -- $echo "$modename: unable to infer tagged configuration" -- $echo "$modename: specify a tag with \`--tag'" 1>&2 -- exit 1 --# else --# $echo "$modename: using $tagname tagged configuration" -- fi -- ;; -- esac -+ exit $EXIT_FAILURE - fi - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then -@@ -1711,9 +1983,9 @@ - if test ! -d "$output_objdir"; then - $show "$mkdir $output_objdir" - $run $mkdir $output_objdir -- status=$? -- if test "$status" -ne 0 && test ! -d "$output_objdir"; then -- exit $status -+ exit_status=$? -+ if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then -+ exit $exit_status - fi - fi - -@@ -1722,7 +1994,7 @@ - "") - $echo "$modename: you must specify an output file" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; -@@ -1732,7 +2004,7 @@ - - case $host in - *cygwin* | *mingw* | *pw32*) -- # don't eliminate duplcations in $postdeps and $predeps -+ # don't eliminate duplications in $postdeps and $predeps - duplicate_compiler_generated_deps=yes - ;; - *) -@@ -1776,7 +2048,6 @@ - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries -- notinst_path= # paths that contain not-installed libtool libraries - case $linkmode in - lib) - passes="conv link" -@@ -1785,7 +2056,7 @@ - *.la) ;; - *) - $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - done -@@ -1823,18 +2094,23 @@ - lib= - found=no - case $deplib in -+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ compiler_flags="$compiler_flags $deplib" -+ fi -+ continue -+ ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 - continue - fi -- if test "$pass" = conv && test "$allow_undefined" = yes; then -- deplibs="$deplib $deplibs" -- continue -- fi - name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` - for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do -- for search_ext in .la $shrext .so .a; do -+ for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then -@@ -1895,18 +2171,6 @@ - fi - fi - ;; # -l -- *.ltframework) -- if test "$linkmode,$pass" = "prog,link"; then -- compile_deplibs="$deplib $compile_deplibs" -- finalize_deplibs="$deplib $finalize_deplibs" -- else -- deplibs="$deplib $deplibs" -- if test "$linkmode" = lib ; then -- newdependency_libs="$deplib $newdependency_libs" -- fi -- fi -- continue -- ;; - -L*) - case $linkmode in - lib) -@@ -1922,11 +2186,11 @@ - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" -- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi -+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - ;; - *) - $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 -@@ -1954,7 +2218,22 @@ - fi - case $linkmode in - lib) -- if test "$deplibs_check_method" != pass_all; then -+ valid_a_lib=no -+ case $deplibs_check_method in -+ match_pattern*) -+ set dummy $deplibs_check_method -+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` -+ if eval $echo \"$deplib\" 2>/dev/null \ -+ | $SED 10q \ -+ | $EGREP "$match_pattern_regex" > /dev/null; then -+ valid_a_lib=yes -+ fi -+ ;; -+ pass_all) -+ valid_a_lib=yes -+ ;; -+ esac -+ if test "$valid_a_lib" != yes; then - $echo - $echo "*** Warning: Trying to link with static lib archive $deplib." - $echo "*** I have the capability to make that library automatically link in when" -@@ -2004,15 +2283,15 @@ - esac # case $deplib - if test "$found" = yes || test -f "$lib"; then : - else -- $echo "$modename: cannot find the library \`$lib'" 1>&2 -- exit 1 -+ $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 -+ exit $EXIT_FAILURE - fi - - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` -@@ -2028,6 +2307,8 @@ - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no -+ avoidtemprpath= -+ - - # Read the .la file - case $lib in -@@ -2035,13 +2316,6 @@ - *) . ./$lib ;; - esac - -- case $host in -- *-*-darwin*) -- # Convert "-framework foo" to "foo.ltframework" in dependency_libs -- test -n "$dependency_libs" && dependency_libs=`$echo "X$dependency_libs" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` -- ;; -- esac -- - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then -@@ -2050,35 +2324,34 @@ - fi - - if test "$pass" = conv; then -- # Only check for convenience libraries -- deplibs="$lib $deplibs" -- tmp_libs= -- for deplib in $dependency_libs; do -- #echo "Adding $deplib to \$deplibs" -- deplibs="$deplib $deplibs" -- if test "X$duplicate_deps" = "Xyes" ; then -- case "$tmp_libs " in -- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -- esac -- fi -- tmp_libs="$tmp_libs $deplib" -- done -+ # Only check for convenience libraries -+ deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" - old_convenience="$old_convenience $ladir/$objdir/$old_library" -+ tmp_libs= -+ for deplib in $dependency_libs; do -+ deplibs="$deplib $deplibs" -+ if test "X$duplicate_deps" = "Xyes" ; then -+ case "$tmp_libs " in -+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ esac -+ fi -+ tmp_libs="$tmp_libs $deplib" -+ done - elif test "$linkmode" != prog && test "$linkmode" != lib; then - $echo "$modename: \`$lib' is not a convenience library" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - continue - fi # $pass = conv - -- -+ - # Get the name of the library we link against. - linklib= - for l in $old_library $library_names; do -@@ -2086,16 +2359,18 @@ - done - if test -z "$linklib"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi -- if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then -+ if test -z "$dlname" || -+ test "$dlopen_support" != yes || -+ test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't -@@ -2132,11 +2407,19 @@ - dir="$libdir" - absdir="$libdir" - fi -+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else -- dir="$ladir/$objdir" -- absdir="$abs_ladir/$objdir" -- # Remove this search path later -- notinst_path="$notinst_path $abs_ladir" -+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then -+ dir="$ladir" -+ absdir="$abs_ladir" -+ # Remove this search path later -+ notinst_path="$notinst_path $abs_ladir" -+ else -+ dir="$ladir/$objdir" -+ absdir="$abs_ladir/$objdir" -+ # Remove this search path later -+ notinst_path="$notinst_path $abs_ladir" -+ fi - fi # $installed = yes - name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` - -@@ -2144,7 +2427,7 @@ - if test "$pass" = dlpreopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). -@@ -2171,7 +2454,7 @@ - continue - fi - -- -+ - if test "$linkmode" = prog && test "$pass" != link; then - newlib_search_path="$newlib_search_path $ladir" - deplibs="$lib $deplibs" -@@ -2209,12 +2492,12 @@ - if test -n "$library_names" && - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then - # We need to hardcode the library path -- if test -n "$shlibpath_var"; then -+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath " in - *" $dir "*) ;; - *" $absdir "*) ;; -- *) temp_rpath="$temp_rpath $dir" ;; -+ *) temp_rpath="$temp_rpath $absdir" ;; - esac - fi - -@@ -2251,24 +2534,29 @@ - fi - - link_static=no # Whether the deplib will be linked statically -+ use_static_libs=$prefer_static_libs -+ if test "$use_static_libs" = built && test "$installed" = yes ; then -+ use_static_libs=no -+ fi - if test -n "$library_names" && -- { test "$prefer_static_libs" = no || test -z "$old_library"; }; then -+ { test "$use_static_libs" = no || test -z "$old_library"; }; then - if test "$installed" = no; then - notinst_deplibs="$notinst_deplibs $lib" - need_relink=yes - fi - # This is a shared library -- -- # Warn about portability, can't link against -module's on some systems (darwin) -- if test "$shouldnotlink" = yes && test "$pass" = link ; then -+ -+ # Warn about portability, can't link against -module's on -+ # some systems (darwin) -+ if test "$shouldnotlink" = yes && test "$pass" = link ; then - $echo - if test "$linkmode" = prog; then - $echo "*** Warning: Linking the executable $output against the loadable module" - else - $echo "*** Warning: Linking the shared library $output against the loadable module" - fi -- $echo "*** $linklib is not portable!" -- fi -+ $echo "*** $linklib is not portable!" -+ fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. -@@ -2326,9 +2614,10 @@ - else - $show "extracting exported symbol list from \`$soname'" - save_ifs="$IFS"; IFS='~' -- eval cmds=\"$extract_expsyms_cmds\" -+ cmds=$extract_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done -@@ -2339,9 +2628,10 @@ - if test -f "$output_objdir/$newlib"; then :; else - $show "generating import library for \`$soname'" - save_ifs="$IFS"; IFS='~' -- eval cmds=\"$old_archive_from_expsyms_cmds\" -+ cmds=$old_archive_from_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done -@@ -2362,11 +2652,15 @@ - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in -- *-*-sco3.2v5* ) add_dir="-L$dir" ;; -+ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; -+ *-*-sysv4*uw2*) add_dir="-L$dir" ;; -+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ -+ *-*-unixware7*) add_dir="-L$dir" ;; - *-*-darwin* ) -- # if the lib is a module then we can not link against it, someone -- # is ignoring the new warnings I added -- if /usr/bin/file -L $add 2> /dev/null | grep "bundle" >/dev/null ; then -+ # if the lib is a module then we can not link against -+ # it, someone is ignoring the new warnings I added -+ if /usr/bin/file -L $add 2> /dev/null | -+ $EGREP ": [^:]* bundle" >/dev/null ; then - $echo "** Warning, lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - $echo -@@ -2374,7 +2668,7 @@ - $echo "** The link will probably fail, sorry" - else - add="$dir/$old_library" -- fi -+ fi - fi - esac - elif test "$hardcode_minus_L" = no; then -@@ -2397,9 +2691,9 @@ - add_dir="-L$dir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then -- case "$libdir" in -+ case $libdir in - [\\/]*) -- add_dir="-L$inst_prefix_dir$libdir $add_dir" -+ add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi -@@ -2416,7 +2710,7 @@ - - if test "$lib_linked" != yes; then - $echo "$modename: configuration error: unsupported hardcode properties" -- exit 1 -+ exit $EXIT_FAILURE - fi - - if test -n "$add_shlibpath"; then -@@ -2459,7 +2753,8 @@ - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then -- if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then -+ if test -n "$inst_prefix_dir" && -+ test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" -@@ -2469,9 +2764,9 @@ - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then -- case "$libdir" in -+ case $libdir in - [\\/]*) -- add_dir="-L$inst_prefix_dir$libdir $add_dir" -+ add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi -@@ -2530,17 +2825,16 @@ - fi - fi - else -- convenience="$convenience $dir/$old_library" -- old_convenience="$old_convenience $dir/$old_library" - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then -- #if test -n "$dependency_libs" && -- # { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || -- # test "$link_static" = yes; }; then -+ if test -n "$dependency_libs" && -+ { test "$hardcode_into_libs" != yes || -+ test "$build_old_libs" = yes || -+ test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do -@@ -2554,7 +2848,7 @@ - esac - done - dependency_libs="$temp_deplibs" -- #fi -+ fi - - newlib_search_path="$newlib_search_path $absdir" - # Link against this library -@@ -2596,20 +2890,18 @@ - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -z "$libdir"; then - $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - if test "$absdir" != "$libdir"; then -- # Sure, some shells/systems don't implement the -ef. -- # Those will have to live with the warning. -- test "$absdir" -ef "$libdir" > /dev/null 2>&1 || -- $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 -+ $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 - fi - path="$absdir" - fi - depdepl= - case $host in - *-*-darwin*) -- # we do not want to link against static libs, but need to link against shared -+ # we do not want to link against static libs, -+ # but need to link against shared - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do -@@ -2617,55 +2909,45 @@ - done - if test -f "$path/$depdepl" ; then - depdepl="$path/$depdepl" -- fi -+ fi - # do not add paths which are already there - case " $newlib_search_path " in - *" $path "*) ;; - *) newlib_search_path="$newlib_search_path $path";; - esac -- path="" - fi -+ path="" - ;; - *) -- path="-L$path" -- ;; -- esac -- -+ path="-L$path" -+ ;; -+ esac - ;; -- -l*) -+ -l*) - case $host in - *-*-darwin*) -- # Again, we only want to link against shared libraries -- eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` -- for tmp in $newlib_search_path ; do -- if test -f "$tmp/lib$tmp_libs.dylib" ; then -- eval depdepl="$tmp/lib$tmp_libs.dylib" -- break -- fi -- done -- path="" -+ # Again, we only want to link against shared libraries -+ eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` -+ for tmp in $newlib_search_path ; do -+ if test -f "$tmp/lib$tmp_libs.dylib" ; then -+ eval depdepl="$tmp/lib$tmp_libs.dylib" -+ break -+ fi -+ done -+ path="" - ;; - *) continue ;; -- esac -- ;; -- -- *.ltframework) -- case $host in -- *-*-darwin*) -- depdepl="$deplib" -- ;; - esac - ;; -- - *) continue ;; - esac - case " $deplibs " in -- *" $depdepl "*) ;; -- *) deplibs="$deplibs $depdepl" ;; -- esac -- case " $deplibs " in - *" $path "*) ;; -- *) deplibs="$deplibs $path" ;; -+ *) deplibs="$path $deplibs" ;; -+ esac -+ case " $deplibs " in -+ *" $depdepl "*) ;; -+ *) deplibs="$depdepl $deplibs" ;; - esac - done - fi # link_all_deplibs != no -@@ -2752,7 +3034,8 @@ - eval $var=\"$tmp_libs\" - done # for var - fi -- # Last step: remove runtime libs from dependency_libs (they stay in deplibs) -+ # Last step: remove runtime libs from dependency_libs -+ # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in -@@ -2812,19 +3095,19 @@ - case $outputname in - lib*) - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` -- eval shared_ext=\"$shrext\" -+ eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - if test "$module" = no; then - $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` -- eval shared_ext=\"$shrext\" -+ eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` -@@ -2835,7 +3118,7 @@ - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 -- exit 1 -+ exit $EXIT_FAILURE - else - $echo - $echo "*** Warning: Linking the shared library $output against the non-libtool" -@@ -2883,13 +3166,13 @@ - if test -n "$8"; then - $echo "$modename: too many parameters to \`-version-info'" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible -- -+ - case $vinfo_number in - yes) - number_major="$2" -@@ -2929,36 +3212,36 @@ - - # Check that each of the things are valid numbers. - case $current in -- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; -+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) -- $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 -+ $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - - case $revision in -- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; -+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) -- $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 -+ $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - - case $age in -- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; -+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) -- $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 -+ $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - - if test "$age" -gt "$current"; then - $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Calculate the version variables. -@@ -2975,7 +3258,7 @@ - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - minor_current=`expr $current + 1` -- verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" -+ verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - ;; - - freebsd-aout) -@@ -3047,7 +3330,7 @@ - *) - $echo "$modename: unknown library version type \`$version_type'" 1>&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - -@@ -3098,9 +3381,15 @@ - tempremovelist=`$echo "$output_objdir/*"` - for p in $tempremovelist; do - case $p in -- *.$objext | *$exeext) -+ *.$objext) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) -+ if test "X$precious_files_regex" != "X"; then -+ if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 -+ then -+ continue -+ fi -+ fi - removelist="$removelist $p" - ;; - *) ;; -@@ -3122,9 +3411,9 @@ - - # Eliminate all temporary directories. - for path in $notinst_path; do -- lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` -- deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` -- dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` -+ lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` -+ deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` -+ dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` - done - - if test -n "$xrpath"; then -@@ -3137,7 +3426,7 @@ - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done -- if true || test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then -+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi -@@ -3170,14 +3459,19 @@ - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework -- deplibs="$deplibs System.ltframework" -+ deplibs="$deplibs -framework System" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; -- *-*-openbsd* | *-*-freebsd*) -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. -- test "X$arg" = "X-lc" && continue -+ ;; -+ *-*-sco3.2v5* | *-*-sco5v6*) -+ # Causes problems with __ctype -+ ;; -+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) -+ # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. -@@ -3221,11 +3515,11 @@ - int main() { return 0; } - EOF - $rm conftest -- $LTCC -o conftest conftest.c $deplibs -+ $LTCC $LTCFLAGS -o conftest conftest.c $deplibs - if test "$?" -eq 0 ; then - ldd_output=`ldd conftest` - for i in $deplibs; do -- name="`expr $i : '-l\(.*\)'`" -+ name=`expr $i : '-l\(.*\)'` - # If $name is empty we are operating on a -L argument. - if test "$name" != "" && test "$name" -ne "0"; then - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -@@ -3262,11 +3556,11 @@ - # Error occurred in the first compile. Let's try to salvage - # the situation: Compile a separate program for each library. - for i in $deplibs; do -- name="`expr $i : '-l\(.*\)'`" -+ name=`expr $i : '-l\(.*\)'` - # If $name is empty we are operating on a -L argument. - if test "$name" != "" && test "$name" != "0"; then - $rm conftest -- $LTCC -o conftest conftest.c $i -+ $LTCC $LTCFLAGS -o conftest conftest.c $i - # Did it work? - if test "$?" -eq 0 ; then - ldd_output=`ldd conftest` -@@ -3314,7 +3608,7 @@ - set dummy $deplibs_check_method - file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - for a_deplib in $deplibs; do -- name="`expr $a_deplib : '-l\(.*\)'`" -+ name=`expr $a_deplib : '-l\(.*\)'` - # If $name is empty we are operating on a -L argument. - if test "$name" != "" && test "$name" != "0"; then - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -@@ -3383,7 +3677,7 @@ - set dummy $deplibs_check_method - match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - for a_deplib in $deplibs; do -- name="`expr $a_deplib : '-l\(.*\)'`" -+ name=`expr $a_deplib : '-l\(.*\)'` - # If $name is empty we are operating on a -L argument. - if test -n "$name" && test "$name" != "0"; then - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -@@ -3463,7 +3757,7 @@ - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework -- newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` -+ newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` - ;; - esac - -@@ -3509,17 +3803,39 @@ - fi - fi - fi -- # Time to change all our "foo.ltframework" stuff back to "-framework foo" -- case $host in -- *-*-darwin*) -- newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -- dependency_libs=`$echo "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -- ;; -- esac - # Done checking deplibs! - deplibs=$newdeplibs - fi - -+ -+ # move library search paths that coincide with paths to not yet -+ # installed libraries to the beginning of the library search list -+ new_libs= -+ for path in $notinst_path; do -+ case " $new_libs " in -+ *" -L$path/$objdir "*) ;; -+ *) -+ case " $deplibs " in -+ *" -L$path/$objdir "*) -+ new_libs="$new_libs -L$path/$objdir" ;; -+ esac -+ ;; -+ esac -+ done -+ for deplib in $deplibs; do -+ case $deplib in -+ -L*) -+ case " $new_libs " in -+ *" $deplib "*) ;; -+ *) new_libs="$new_libs $deplib" ;; -+ esac -+ ;; -+ *) new_libs="$new_libs $deplib" ;; -+ esac -+ done -+ deplibs="$new_libs" -+ -+ - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= -@@ -3532,7 +3848,7 @@ - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" -- test "$mode" != relink && test "$fast_install" = no && rpath="$compile_rpath$rpath" -+ test "$mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then -@@ -3587,7 +3903,7 @@ - fi - - # Get the real and link names of the library. -- eval shared_ext=\"$shrext\" -+ eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - realname="$2" -@@ -3603,6 +3919,7 @@ - fi - - lib="$output_objdir/$realname" -+ linknames= - for link - do - linknames="$linknames $link" -@@ -3617,10 +3934,11 @@ - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols -- eval cmds=\"$export_symbols_cmds\" -+ cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - if len=`expr "X$cmd" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - $show "$cmd" -@@ -3630,6 +3948,9 @@ - # The command line is too long to execute in one step. - $show "using reloadable object file for export list..." - skipped_export=: -+ # Break out early, otherwise skipped_export may be -+ # set to false by a later but shorter cmd. -+ break - fi - done - IFS="$save_ifs" -@@ -3650,12 +3971,12 @@ - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; -- *) -+ *) - tmp_deplibs="$tmp_deplibs $test_deplib" - ;; - esac - done -- deplibs="$tmp_deplibs" -+ deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then -@@ -3663,67 +3984,13 @@ - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${outputname}x" -- $show "${rm}r $gentop" -- $run ${rm}r "$gentop" -- $show "$mkdir $gentop" -- $run $mkdir "$gentop" -- status=$? -- if test "$status" -ne 0 && test ! -d "$gentop"; then -- exit $status -- fi - generated="$generated $gentop" - -- for xlib in $convenience; do -- # Extract the objects. -- case $xlib in -- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; -- *) xabs=`pwd`"/$xlib" ;; -- esac -- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` -- xdir="$gentop/$xlib" -- -- $show "${rm}r $xdir" -- $run ${rm}r "$xdir" -- $show "$mkdir $xdir" -- $run $mkdir "$xdir" -- status=$? -- if test "$status" -ne 0 && test ! -d "$xdir"; then -- exit $status -- fi -- # We will extract separately just the conflicting names and we will no -- # longer touch any unique names. It is faster to leave these extract -- # automatically by $AR in one run. -- $show "(cd $xdir && $AR x $xabs)" -- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? -- if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then -- : -- else -- $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 -- $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 -- $AR t "$xabs" | sort | uniq -cd | while read -r count name -- do -- i=1 -- while test "$i" -le "$count" -- do -- # Put our $i before any first dot (extension) -- # Never overwrite any file -- name_to="$name" -- while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" -- do -- name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` -- done -- $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" -- $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? -- i=`expr $i + 1` -- done -- done -- fi -- -- libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` -- done -+ func_extract_archives $gentop $convenience -+ libobjs="$libobjs $func_extract_archives_result" - fi - fi -- -+ - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - linker_flags="$linker_flags $flag" -@@ -3734,31 +4001,27 @@ - $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? - fi - -- # Add all flags from the command line. We here create a library, -- # but those flags were only added to compile_command and -- # finalize_command, which are only used when creating executables. -- # So do it by hand here. -- compiler_flags="$compiler_flags $add_flags" -- # Only add it to commands which use CC, instead of LD, i.e. -- # only to $compiler_flags -- #linker_flags="$linker_flags $add_flags" -- - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then -- eval cmds=\"$module_expsym_cmds\" -+ eval test_cmds=\"$module_expsym_cmds\" -+ cmds=$module_expsym_cmds - else -- eval cmds=\"$module_cmds\" -+ eval test_cmds=\"$module_cmds\" -+ cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then -- eval cmds=\"$archive_expsym_cmds\" -+ eval test_cmds=\"$archive_expsym_cmds\" -+ cmds=$archive_expsym_cmds - else -- eval cmds=\"$archive_cmds\" -+ eval test_cmds=\"$archive_cmds\" -+ cmds=$archive_cmds - fi - fi - -- if test "X$skipped_export" != "X:" && len=`expr "X$cmds" : ".*"` && -+ if test "X$skipped_export" != "X:" && -+ len=`expr "X$test_cmds" : ".*" 2>/dev/null` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else -@@ -3777,6 +4040,7 @@ - save_libobjs=$libobjs - fi - save_output=$output -+ output_la=`$echo "X$output" | $Xsed -e "$basename"` - - # Clear the reloadable object creation command queue and - # initialize k to one. -@@ -3786,13 +4050,13 @@ - delfiles= - last_robj= - k=1 -- output=$output_objdir/$save_output-${k}.$objext -+ output=$output_objdir/$output_la-${k}.$objext - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - eval test_cmds=\"$reload_cmds $objlist $last_robj\" - if test "X$objlist" = X || -- { len=`expr "X$test_cmds" : ".*"` && -+ { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && - test "$len" -le "$max_cmd_len"; }; then - objlist="$objlist $obj" - else -@@ -3806,9 +4070,9 @@ - # the last one created. - eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" - fi -- last_robj=$output_objdir/$save_output-${k}.$objext -+ last_robj=$output_objdir/$output_la-${k}.$objext - k=`expr $k + 1` -- output=$output_objdir/$save_output-${k}.$objext -+ output=$output_objdir/$output_la-${k}.$objext - objlist=$obj - len=1 - fi -@@ -3828,13 +4092,13 @@ - eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" - fi - -- # Set up a command to remove the reloadale object files -+ # Set up a command to remove the reloadable object files - # after they are used. - i=0 - while test "$i" -lt "$k" - do - i=`expr $i + 1` -- delfiles="$delfiles $output_objdir/$save_output-${i}.$objext" -+ delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" - done - - $echo "creating a temporary reloadable object file: $output" -@@ -3859,28 +4123,54 @@ - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. -+ if test "$module" = yes && test -n "$module_cmds" ; then -+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then -+ cmds=$module_expsym_cmds -+ else -+ cmds=$module_cmds -+ fi -+ else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then -- eval cmds=\"$archive_expsym_cmds\" -+ cmds=$archive_expsym_cmds - else -- eval cmds=\"$archive_cmds\" -+ cmds=$archive_cmds -+ fi - fi - - # Append the command to remove the reloadable object files - # to the just-reset $cmds. -- eval cmds=\"\$cmds~$rm $delfiles\" -+ eval cmds=\"\$cmds~\$rm $delfiles\" - fi - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - $show "$cmd" -- $run eval "$cmd" || exit $? -+ $run eval "$cmd" || { -+ lt_exit=$? -+ -+ # Restore the uninstalled library and exit -+ if test "$mode" = relink; then -+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' -+ fi -+ -+ exit $lt_exit -+ } - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? -- exit 0 -+ -+ if test -n "$convenience"; then -+ if test -z "$whole_archive_flag_spec"; then -+ $show "${rm}r $gentop" -+ $run ${rm}r "$gentop" -+ fi -+ fi -+ -+ exit $EXIT_SUCCESS - fi - - # Create links to the real library. -@@ -3928,7 +4218,7 @@ - *.lo) - if test -n "$objs$old_deplibs"; then - $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - libobj="$output" - obj=`$echo "X$output" | $Xsed -e "$lo2o"` -@@ -3957,64 +4247,10 @@ - eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${obj}x" -- $show "${rm}r $gentop" -- $run ${rm}r "$gentop" -- $show "$mkdir $gentop" -- $run $mkdir "$gentop" -- status=$? -- if test "$status" -ne 0 && test ! -d "$gentop"; then -- exit $status -- fi - generated="$generated $gentop" - -- for xlib in $convenience; do -- # Extract the objects. -- case $xlib in -- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; -- *) xabs=`pwd`"/$xlib" ;; -- esac -- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` -- xdir="$gentop/$xlib" -- -- $show "${rm}r $xdir" -- $run ${rm}r "$xdir" -- $show "$mkdir $xdir" -- $run $mkdir "$xdir" -- status=$? -- if test "$status" -ne 0 && test ! -d "$xdir"; then -- exit $status -- fi -- # We will extract separately just the conflicting names and we will no -- # longer touch any unique names. It is faster to leave these extract -- # automatically by $AR in one run. -- $show "(cd $xdir && $AR x $xabs)" -- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? -- if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then -- : -- else -- $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 -- $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 -- $AR t "$xabs" | sort | uniq -cd | while read -r count name -- do -- i=1 -- while test "$i" -le "$count" -- do -- # Put our $i before any first dot (extension) -- # Never overwrite any file -- name_to="$name" -- while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" -- do -- name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` -- done -- $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" -- $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? -- i=`expr $i + 1` -- done -- done -- fi -- -- reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` -- done -+ func_extract_archives $gentop $convenience -+ reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - -@@ -4022,10 +4258,11 @@ - reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" -- eval cmds=\"$reload_cmds\" -+ cmds=$reload_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done -@@ -4038,7 +4275,7 @@ - $run ${rm}r $gentop - fi - -- exit 0 -+ exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then -@@ -4051,17 +4288,18 @@ - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $run eval "echo timestamp > $libobj" || exit $? -- exit 0 -+ exit $EXIT_SUCCESS - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" -- eval cmds=\"$reload_cmds\" -+ cmds=$reload_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done -@@ -4073,7 +4311,7 @@ - $run ${rm}r $gentop - fi - -- exit 0 -+ exit $EXIT_SUCCESS - ;; - - prog) -@@ -4098,24 +4336,50 @@ - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework -- compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` -- finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` -+ compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` -+ finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` - ;; - esac - - case $host in -- *-*-darwin*) -+ *darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - if test "$tagname" = CXX ; then - compile_command="$compile_command ${wl}-bind_at_load" - finalize_command="$finalize_command ${wl}-bind_at_load" - fi -- # Time to change all our "foo.ltframework" stuff back to "-framework foo" -- compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -- finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - -+ -+ # move library search paths that coincide with paths to not yet -+ # installed libraries to the beginning of the library search list -+ new_libs= -+ for path in $notinst_path; do -+ case " $new_libs " in -+ *" -L$path/$objdir "*) ;; -+ *) -+ case " $compile_deplibs " in -+ *" -L$path/$objdir "*) -+ new_libs="$new_libs -L$path/$objdir" ;; -+ esac -+ ;; -+ esac -+ done -+ for deplib in $compile_deplibs; do -+ case $deplib in -+ -L*) -+ case " $new_libs " in -+ *" $deplib "*) ;; -+ *) new_libs="$new_libs $deplib" ;; -+ esac -+ ;; -+ *) new_libs="$new_libs $deplib" ;; -+ esac -+ done -+ compile_deplibs="$new_libs" -+ -+ - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" - -@@ -4160,10 +4424,15 @@ - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) -+ testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - *) dllsearchpath="$dllsearchpath:$libdir";; - esac -+ case :$dllsearchpath: in -+ *":$testbindir:"*) ;; -+ *) dllsearchpath="$dllsearchpath:$testbindir";; -+ esac - ;; - esac - done -@@ -4277,13 +4546,25 @@ - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then -- export_symbols="$output_objdir/$output.exp" -+ export_symbols="$output_objdir/$outputname.exp" - $run $rm $export_symbols -- $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' -+ $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' -+ case $host in -+ *cygwin* | *mingw* ) -+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' -+ $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' -+ ;; -+ esac - else -- $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' -- $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' -+ $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' -+ $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - $run eval 'mv "$nlist"T "$nlist"' -+ case $host in -+ *cygwin* | *mingw* ) -+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' -+ $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' -+ ;; -+ esac - fi - fi - -@@ -4334,7 +4615,26 @@ - #endif - - /* The mapping between symbol names and symbols. */ -+" -+ -+ case $host in -+ *cygwin* | *mingw* ) -+ $echo >> "$output_objdir/$dlsyms" "\ -+/* DATA imports from DLLs on WIN32 can't be const, because -+ runtime relocations are performed -- see ld's documentation -+ on pseudo-relocs */ -+struct { -+" -+ ;; -+ * ) -+ $echo >> "$output_objdir/$dlsyms" "\ - const struct { -+" -+ ;; -+ esac -+ -+ -+ $echo >> "$output_objdir/$dlsyms" "\ - const char *name; - lt_ptr address; - } -@@ -4381,20 +4681,33 @@ - esac - - # Now compile the dynamic symbol file. -- $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" -- $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? -+ $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" -+ $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? - - # Clean up the generated files. - $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" - $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" - - # Transform the symbol file into the correct name. -- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` -- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` -+ case $host in -+ *cygwin* | *mingw* ) -+ if test -f "$output_objdir/${outputname}.def" ; then -+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` -+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` -+ else -+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` -+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` -+ fi -+ ;; -+ * ) -+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` -+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` -+ ;; -+ esac - ;; - *) - $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - else -@@ -4407,17 +4720,6 @@ - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` - fi - -- # AIX runtime linking requires linking programs with -Wl,-brtl and libs with -Wl,-G -- # Also add -bnolibpath to the beginning of the link line, to clear the hardcoded runpath. -- # Otherwise, things like the -L path to libgcc.a are accidentally hardcoded by ld. -- # This does not apply on AIX for ia64, which uses a SysV linker. -- case "$host" in -- ia64-*-aix5*) ;; -- *-*-aix4* | *-*-aix5*) -- compile_command=`$echo "X$compile_command $wl-brtl" | $Xsed -e "s/\$CC/\$CC $wl-bnolibpath/1"` -- finalize_command=`$echo "X$finalize_command $wl-brtl" | $Xsed -e "s/\$CC/\$CC $wl-bnolibpath/1"` ;; -- esac -- - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - # Replace the output file specification. - compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` -@@ -4426,7 +4728,7 @@ - # We have no uninstalled library dependencies, so finalize right now. - $show "$link_command" - $run eval "$link_command" -- status=$? -+ exit_status=$? - - # Delete the generated files. - if test -n "$dlsyms"; then -@@ -4434,7 +4736,7 @@ - $run $rm "$output_objdir/${outputname}S.${objext}" - fi - -- exit $status -+ exit $exit_status - fi - - if test -n "$shlibpath_var"; then -@@ -4493,7 +4795,7 @@ - # Link the executable and exit - $show "$link_command" - $run eval "$link_command" || exit $? -- exit 0 -+ exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then -@@ -4548,10 +4850,10 @@ - fi - - # Quote $echo for shipping. -- if test "X$echo" = "X$SHELL $0 --fallback-echo"; then -- case $0 in -- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; -- *) qecho="$SHELL `pwd`/$0 --fallback-echo";; -+ if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then -+ case $progpath in -+ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; -+ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; - esac - qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` - else -@@ -4573,11 +4875,13 @@ - *) exeext= ;; - esac - case $host in -- *mingw* ) -- cwrappersource=`$echo ${output_objdir}/lt-${outputname}.c` -- cwrapper=`$echo ${output}.exe` -- $rm $cwrappersource $cwrapper -- trap "$rm $cwrappersource $cwrapper; exit 1" 1 2 15 -+ *cygwin* | *mingw* ) -+ output_name=`basename $output` -+ output_path=`dirname $output` -+ cwrappersource="$output_path/$objdir/lt-$output_name.c" -+ cwrapper="$output_path/$output_name.exe" -+ $rm $cwrappersource $cwrapper -+ trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - cat > $cwrappersource <<EOF - -@@ -4586,7 +4890,7 @@ - - The $output program cannot be directly executed until all the libtool - libraries that it depends on are installed. -- -+ - This wrapper executable should never be moved out of the build directory. - If it is, it will not operate correctly. - -@@ -4602,6 +4906,9 @@ - #include <malloc.h> - #include <stdarg.h> - #include <assert.h> -+#include <string.h> -+#include <ctype.h> -+#include <sys/stat.h> - - #if defined(PATH_MAX) - # define LT_PATHMAX PATH_MAX -@@ -4612,15 +4919,19 @@ - #endif - - #ifndef DIR_SEPARATOR --#define DIR_SEPARATOR '/' -+# define DIR_SEPARATOR '/' -+# define PATH_SEPARATOR ':' - #endif - - #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) --#define HAVE_DOS_BASED_FILE_SYSTEM --#ifndef DIR_SEPARATOR_2 --#define DIR_SEPARATOR_2 '\\' --#endif -+# define HAVE_DOS_BASED_FILE_SYSTEM -+# ifndef DIR_SEPARATOR_2 -+# define DIR_SEPARATOR_2 '\\' -+# endif -+# ifndef PATH_SEPARATOR_2 -+# define PATH_SEPARATOR_2 ';' -+# endif - #endif - - #ifndef DIR_SEPARATOR_2 -@@ -4630,17 +4941,32 @@ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) - #endif /* DIR_SEPARATOR_2 */ - -+#ifndef PATH_SEPARATOR_2 -+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -+#else /* PATH_SEPARATOR_2 */ -+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -+#endif /* PATH_SEPARATOR_2 */ -+ - #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) - #define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ - } while (0) - -+/* -DDEBUG is fairly common in CFLAGS. */ -+#undef DEBUG -+#if defined DEBUGWRAPPER -+# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) -+#else -+# define DEBUG(format, ...) -+#endif -+ - const char *program_name = NULL; - - void * xmalloc (size_t num); - char * xstrdup (const char *string); --char * basename (const char *name); --char * fnqualify(const char *path); -+const char * base_name (const char *name); -+char * find_executable(const char *wrapper); -+int check_executable(const char *path); - char * strendzap(char *str, const char *pat); - void lt_fatal (const char *message, ...); - -@@ -4649,30 +4975,52 @@ - { - char **newargz; - int i; -- -- program_name = (char *) xstrdup ((char *) basename (argv[0])); -+ -+ program_name = (char *) xstrdup (base_name (argv[0])); -+ DEBUG("(main) argv[0] : %s\n",argv[0]); -+ DEBUG("(main) program_name : %s\n",program_name); - newargz = XMALLOC(char *, argc+2); - EOF - -- cat >> $cwrappersource <<EOF -- newargz[0] = "$SHELL"; -+ cat >> $cwrappersource <<EOF -+ newargz[0] = (char *) xstrdup("$SHELL"); - EOF - -- cat >> $cwrappersource <<"EOF" -- newargz[1] = fnqualify(argv[0]); -+ cat >> $cwrappersource <<"EOF" -+ newargz[1] = find_executable(argv[0]); -+ if (newargz[1] == NULL) -+ lt_fatal("Couldn't find %s", argv[0]); -+ DEBUG("(main) found exe at : %s\n",newargz[1]); - /* we know the script has the same name, without the .exe */ - /* so make sure newargz[1] doesn't end in .exe */ -- strendzap(newargz[1],".exe"); -+ strendzap(newargz[1],".exe"); - for (i = 1; i < argc; i++) - newargz[i+1] = xstrdup(argv[i]); - newargz[argc+1] = NULL; -+ -+ for (i=0; i<argc+1; i++) -+ { -+ DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]); -+ ; -+ } -+ - EOF - -- cat >> $cwrappersource <<EOF -+ case $host_os in -+ mingw*) -+ cat >> $cwrappersource <<EOF -+ execv("$SHELL",(char const **)newargz); -+EOF -+ ;; -+ *) -+ cat >> $cwrappersource <<EOF - execv("$SHELL",newargz); - EOF -+ ;; -+ esac - -- cat >> $cwrappersource <<"EOF" -+ cat >> $cwrappersource <<"EOF" -+ return 127; - } - - void * -@@ -4685,59 +5033,159 @@ - return p; - } - --char * -+char * - xstrdup (const char *string) - { - return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL - ; - } - --char * --basename (const char *name) -+const char * -+base_name (const char *name) - { - const char *base; - - #if defined (HAVE_DOS_BASED_FILE_SYSTEM) - /* Skip over the disk name in MSDOS pathnames. */ -- if (isalpha (name[0]) && name[1] == ':') -+ if (isalpha ((unsigned char)name[0]) && name[1] == ':') - name += 2; - #endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; -- return (char *) base; -+ return base; - } - --char * --fnqualify(const char *path) -+int -+check_executable(const char * path) -+{ -+ struct stat st; -+ -+ DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); -+ if ((!path) || (!*path)) -+ return 0; -+ -+ if ((stat (path, &st) >= 0) && -+ ( -+ /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ -+#if defined (S_IXOTH) -+ ((st.st_mode & S_IXOTH) == S_IXOTH) || -+#endif -+#if defined (S_IXGRP) -+ ((st.st_mode & S_IXGRP) == S_IXGRP) || -+#endif -+ ((st.st_mode & S_IXUSR) == S_IXUSR)) -+ ) -+ return 1; -+ else -+ return 0; -+} -+ -+/* Searches for the full path of the wrapper. Returns -+ newly allocated full path name if found, NULL otherwise */ -+char * -+find_executable (const char* wrapper) - { -- size_t size; -- char *p; -+ int has_slash = 0; -+ const char* p; -+ const char* p_next; -+ /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; -+ int tmp_len; -+ char* concat_name; -+ -+ DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); - -- assert(path != NULL); -+ if ((wrapper == NULL) || (*wrapper == '\0')) -+ return NULL; - -- /* Is it qualified already? */ -+ /* Absolute path? */ -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -+ if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') -+ { -+ concat_name = xstrdup (wrapper); -+ if (check_executable(concat_name)) -+ return concat_name; -+ XFREE(concat_name); -+ } -+ else -+ { -+#endif -+ if (IS_DIR_SEPARATOR (wrapper[0])) -+ { -+ concat_name = xstrdup (wrapper); -+ if (check_executable(concat_name)) -+ return concat_name; -+ XFREE(concat_name); -+ } - #if defined (HAVE_DOS_BASED_FILE_SYSTEM) -- if (isalpha (path[0]) && path[1] == ':') -- return xstrdup (path); -+ } - #endif -- if (IS_DIR_SEPARATOR (path[0])) -- return xstrdup (path); - -- /* prepend the current directory */ -- /* doesn't handle '~' */ -+ for (p = wrapper; *p; p++) -+ if (*p == '/') -+ { -+ has_slash = 1; -+ break; -+ } -+ if (!has_slash) -+ { -+ /* no slashes; search PATH */ -+ const char* path = getenv ("PATH"); -+ if (path != NULL) -+ { -+ for (p = path; *p; p = p_next) -+ { -+ const char* q; -+ size_t p_len; -+ for (q = p; *q; q++) -+ if (IS_PATH_SEPARATOR(*q)) -+ break; -+ p_len = q - p; -+ p_next = (*q == '\0' ? q : q + 1); -+ if (p_len == 0) -+ { -+ /* empty path: current directory */ -+ if (getcwd (tmp, LT_PATHMAX) == NULL) -+ lt_fatal ("getcwd failed"); -+ tmp_len = strlen(tmp); -+ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); -+ memcpy (concat_name, tmp, tmp_len); -+ concat_name[tmp_len] = '/'; -+ strcpy (concat_name + tmp_len + 1, wrapper); -+ } -+ else -+ { -+ concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); -+ memcpy (concat_name, p, p_len); -+ concat_name[p_len] = '/'; -+ strcpy (concat_name + p_len + 1, wrapper); -+ } -+ if (check_executable(concat_name)) -+ return concat_name; -+ XFREE(concat_name); -+ } -+ } -+ /* not found in PATH; assume curdir */ -+ } -+ /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); -- size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ -- p = XMALLOC(char, size); -- sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); -- return p; -+ tmp_len = strlen(tmp); -+ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); -+ memcpy (concat_name, tmp, tmp_len); -+ concat_name[tmp_len] = '/'; -+ strcpy (concat_name + tmp_len + 1, wrapper); -+ -+ if (check_executable(concat_name)) -+ return concat_name; -+ XFREE(concat_name); -+ return NULL; - } - - char * --strendzap(char *str, const char *pat) -+strendzap(char *str, const char *pat) - { - size_t len, patlen; - -@@ -4757,7 +5205,7 @@ - } - - static void --lt_error_core (int exit_status, const char * mode, -+lt_error_core (int exit_status, const char * mode, - const char * message, va_list ap) - { - fprintf (stderr, "%s: %s: ", program_name, mode); -@@ -4777,16 +5225,16 @@ - va_end (ap); - } - EOF -- # we should really use a build-platform specific compiler -- # here, but OTOH, the wrappers (shell script and this C one) -- # are only useful if you want to execute the "real" binary. -- # Since the "real" binary is built for $host, then this -- # wrapper might as well be built for $host, too. -- $run $LTCC -s -o $cwrapper $cwrappersource -- ;; -- esac -- $rm $output -- trap "$rm $output; exit 1" 1 2 15 -+ # we should really use a build-platform specific compiler -+ # here, but OTOH, the wrappers (shell script and this C one) -+ # are only useful if you want to execute the "real" binary. -+ # Since the "real" binary is built for $host, then this -+ # wrapper might as well be built for $host, too. -+ $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource -+ ;; -+ esac -+ $rm $output -+ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 - - $echo > $output "\ - #! $SHELL -@@ -4807,7 +5255,7 @@ - - # The HP-UX ksh and POSIX shell print the target directory to stdout - # if CDPATH is set. --if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi -+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - relink_command=\"$relink_command\" - -@@ -4886,7 +5334,7 @@ - else - $echo \"\$relink_command_output\" >&2 - $rm \"\$progdir/\$file\" -- exit 1 -+ exit $EXIT_FAILURE - fi - fi - -@@ -4936,34 +5384,32 @@ - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2*) - $echo >> $output "\ -- exec \$progdir\\\\\$program \${1+\"\$@\"} -+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} - " - ;; - - *) -- # Need to set LD_LIBRARY_PATH, to the value already -- # computed within libtool. - $echo >> $output "\ -- LD_LIBRARY_PATH=\"$rpath\" exec \$progdir/\$program \${1+\"\$@\"} -+ exec \"\$progdir/\$program\" \${1+\"\$@\"} - " - ;; - esac - $echo >> $output "\ - \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" -- exit 1 -+ exit $EXIT_FAILURE - fi - else - # The program doesn't exist. -- \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 -+ \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 - \$echo \"This script is just a wrapper for \$program.\" 1>&2 - $echo \"See the $PACKAGE documentation for more information.\" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - fi\ - " - chmod +x $output - fi -- exit 0 -+ exit $EXIT_SUCCESS - ;; - esac - -@@ -4986,78 +5432,78 @@ - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" -- $show "${rm}r $gentop" -- $run ${rm}r "$gentop" -- $show "$mkdir $gentop" -- $run $mkdir "$gentop" -- status=$? -- if test "$status" -ne 0 && test ! -d "$gentop"; then -- exit $status -- fi - generated="$generated $gentop" - -- # Add in members from convenience archives. -- for xlib in $addlibs; do -- # Extract the objects. -- case $xlib in -- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; -- *) xabs=`pwd`"/$xlib" ;; -- esac -- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` -- xdir="$gentop/$xlib" -- -- $show "${rm}r $xdir" -- $run ${rm}r "$xdir" -- $show "$mkdir $xdir" -- $run $mkdir "$xdir" -- status=$? -- if test "$status" -ne 0 && test ! -d "$xdir"; then -- exit $status -- fi -- # We will extract separately just the conflicting names and we will no -- # longer touch any unique names. It is faster to leave these extract -- # automatically by $AR in one run. -- $show "(cd $xdir && $AR x $xabs)" -- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? -- if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then -- : -- else -- $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 -- $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 -- $AR t "$xabs" | sort | uniq -cd | while read -r count name -- do -- i=1 -- while test "$i" -le "$count" -- do -- # Put our $i before any first dot (extension) -- # Never overwrite any file -- name_to="$name" -- while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" -- do -- name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` -- done -- $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" -- $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? -- i=`expr $i + 1` -- done -- done -- fi -- -- oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` -- done -+ func_extract_archives $gentop $addlibs -+ oldobjs="$oldobjs $func_extract_archives_result" - fi - -- compiler_flags="$compiler_flags $add_flags" -- - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then -- eval cmds=\"$old_archive_from_new_cmds\" -+ cmds=$old_archive_from_new_cmds - else -+ # POSIX demands no paths to be encoded in archives. We have -+ # to avoid creating archives with duplicate basenames if we -+ # might have to extract them afterwards, e.g., when creating a -+ # static archive out of a convenience library, or when linking -+ # the entirety of a libtool archive into another (currently -+ # not supported by libtool). -+ if (for obj in $oldobjs -+ do -+ $echo "X$obj" | $Xsed -e 's%^.*/%%' -+ done | sort | sort -uc >/dev/null 2>&1); then -+ : -+ else -+ $echo "copying selected object files to avoid basename conflicts..." -+ -+ if test -z "$gentop"; then -+ gentop="$output_objdir/${outputname}x" -+ generated="$generated $gentop" -+ -+ $show "${rm}r $gentop" -+ $run ${rm}r "$gentop" -+ $show "$mkdir $gentop" -+ $run $mkdir "$gentop" -+ exit_status=$? -+ if test "$exit_status" -ne 0 && test ! -d "$gentop"; then -+ exit $exit_status -+ fi -+ fi -+ -+ save_oldobjs=$oldobjs -+ oldobjs= -+ counter=1 -+ for obj in $save_oldobjs -+ do -+ objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` -+ case " $oldobjs " in -+ " ") oldobjs=$obj ;; -+ *[\ /]"$objbase "*) -+ while :; do -+ # Make sure we don't pick an alternate name that also -+ # overlaps. -+ newobj=lt$counter-$objbase -+ counter=`expr $counter + 1` -+ case " $oldobjs " in -+ *[\ /]"$newobj "*) ;; -+ *) if test ! -f "$gentop/$newobj"; then break; fi ;; -+ esac -+ done -+ $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" -+ $run ln "$obj" "$gentop/$newobj" || -+ $run cp "$obj" "$gentop/$newobj" -+ oldobjs="$oldobjs $gentop/$newobj" -+ ;; -+ *) oldobjs="$oldobjs $obj" ;; -+ esac -+ done -+ fi -+ - eval cmds=\"$old_archive_cmds\" - - if len=`expr "X$cmds" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then -- : -+ cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - $echo "using piecewise archive linking..." -@@ -5066,31 +5512,18 @@ - objlist= - concat_cmds= - save_oldobjs=$oldobjs -- # GNU ar 2.10+ was changed to match POSIX; thus no paths are -- # encoded into archives. This makes 'ar r' malfunction in -- # this piecewise linking case whenever conflicting object -- # names appear in distinct ar calls; check, warn and compensate. -- if (for obj in $save_oldobjs -- do -- $echo "X$obj" | $Xsed -e 's%^.*/%%' -- done | sort | sort -uc >/dev/null 2>&1); then -- : -- else -- $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2 -- $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2 -- AR_FLAGS=cq -- fi -+ - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj -- done -+ done - for obj in $save_oldobjs - do - oldobjs="$objlist $obj" - objlist="$objlist $obj" - eval test_cmds=\"$old_archive_cmds\" -- if len=`expr "X$test_cmds" : ".*"` && -+ if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && - test "$len" -le "$max_cmd_len"; then - : - else -@@ -5098,7 +5531,7 @@ - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB -- fi -+ fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= -@@ -5109,12 +5542,13 @@ - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else -- eval cmds=\"\$concat_cmds~$old_archive_cmds\" -+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do -+ eval cmd=\"$cmd\" - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? -@@ -5146,11 +5580,13 @@ - fi - done - # Quote the link command for shipping. -- relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@)" -+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then -- relink_command= -- fi -+ relink_command= -+ fi -+ -+ - # Only create the output if not a dry run. - if test -z "$run"; then - for installed in no yes; do -@@ -5168,7 +5604,7 @@ - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -z "$libdir"; then - $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - newdependency_libs="$newdependency_libs $libdir/$name" - ;; -@@ -5182,7 +5618,7 @@ - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - if test -z "$libdir"; then - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - newdlfiles="$newdlfiles $libdir/$name" - done -@@ -5193,11 +5629,30 @@ - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - if test -z "$libdir"; then - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - newdlprefiles="$newdlprefiles $libdir/$name" - done - dlprefiles="$newdlprefiles" -+ else -+ newdlfiles= -+ for lib in $dlfiles; do -+ case $lib in -+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; -+ *) abs=`pwd`"/$lib" ;; -+ esac -+ newdlfiles="$newdlfiles $abs" -+ done -+ dlfiles="$newdlfiles" -+ newdlprefiles= -+ for lib in $dlprefiles; do -+ case $lib in -+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; -+ *) abs=`pwd`"/$lib" ;; -+ esac -+ newdlprefiles="$newdlprefiles $abs" -+ done -+ dlprefiles="$newdlprefiles" - fi - $rm $output - # place dlname in correct position for cygwin -@@ -5241,7 +5696,7 @@ - - # Directory that this library needs to be installed in: - libdir='$install_libdir'" -- if test "$installed" = no && test "$need_relink" = yes && test "$fast_install" = no; then -+ if test "$installed" = no && test "$need_relink" = yes; then - $echo >> $output "\ - relink_command=\"$relink_command\"" - fi -@@ -5254,7 +5709,7 @@ - $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? - ;; - esac -- exit 0 -+ exit $EXIT_SUCCESS - ;; - - # libtool install mode -@@ -5265,11 +5720,11 @@ - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. -- $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then -+ $echo "X$nonopt" | grep shtool > /dev/null; then - # Aesthetically quote it. - arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` - case $arg in -- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac -@@ -5278,14 +5733,14 @@ - shift - else - install_prog= -- arg="$nonopt" -+ arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in -- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac -@@ -5303,28 +5758,31 @@ - do - if test -n "$dest"; then - files="$files $dest" -- dest="$arg" -+ dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; -- -f) prev="-f" ;; -- -g) prev="-g" ;; -- -m) prev="-m" ;; -- -o) prev="-o" ;; -+ -f) -+ case " $install_prog " in -+ *[\\\ /]cp\ *) ;; -+ *) prev=$arg ;; -+ esac -+ ;; -+ -g | -m | -o) prev=$arg ;; - -s) - stripme=" -s" - continue - ;; -- -*) ;; -- -+ -*) -+ ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - prev= - else -- dest="$arg" -+ dest=$arg - continue - fi - ;; -@@ -5333,7 +5791,7 @@ - # Aesthetically quote the argument. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in -- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac -@@ -5343,13 +5801,13 @@ - if test -z "$install_prog"; then - $echo "$modename: you must specify an install program" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - if test -n "$prev"; then - $echo "$modename: the \`$prev' option requires an argument" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - if test -z "$files"; then -@@ -5359,7 +5817,7 @@ - $echo "$modename: you must specify a destination" 1>&2 - fi - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Strip any trailing slash from the destination. -@@ -5380,7 +5838,7 @@ - if test "$#" -gt 2; then - $echo "$modename: \`$dest' is not a directory" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - fi - case $destdir in -@@ -5392,7 +5850,7 @@ - *) - $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - done -@@ -5421,7 +5879,7 @@ - else - $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - library_names= -@@ -5463,7 +5921,7 @@ - # but it's something to keep an eye on. - if test "$inst_prefix_dir" = "$destdir"; then - $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - if test -n "$inst_prefix_dir"; then -@@ -5478,7 +5936,7 @@ - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - fi - -@@ -5502,23 +5960,36 @@ - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. -+ # Try `ln -sf' first, because the `ln' binary might depend on -+ # the symlink we replace! Solaris /bin/ln does not understand -f, -+ # so we also need to try rm && ln -s. - for linkname - do - if test "$linkname" != "$realname"; then -- $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" -- $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" -+ $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" -+ $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" - fi - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" -- eval cmds=\"$postinstall_cmds\" -+ cmds=$postinstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - $show "$cmd" -- $run eval "$cmd" || exit $? -+ $run eval "$cmd" || { -+ lt_exit=$? -+ -+ # Restore the uninstalled library and exit -+ if test "$mode" = relink; then -+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' -+ fi -+ -+ exit $lt_exit -+ } - done - IFS="$save_ifs" - fi -@@ -5556,7 +6027,7 @@ - *) - $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - -@@ -5574,7 +6045,7 @@ - $show "$install_prog $staticobj $staticdest" - $run eval "$install_prog \$staticobj \$staticdest" || exit $? - fi -- exit 0 -+ exit $EXIT_SUCCESS - ;; - - *) -@@ -5612,23 +6083,21 @@ - notinst_deplibs= - relink_command= - -- # To insure that "foo" is sourced, and not "foo.exe", -- # finese the cygwin/MSYS system by explicitly sourcing "foo." -- # which disallows the automatic-append-.exe behavior. -- case $build in -- *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; -- *) wrapperdot=${wrapper} ;; -- esac -+ # Note that it is not necessary on cygwin/mingw to append a dot to -+ # foo even if both foo and FILE.exe exist: automatic-append-.exe -+ # behavior happens only for exec(3), not for open(2)! Also, sourcing -+ # `FILE.' does not work on cygwin managed mounts. -+ # - # If there is no directory component, then add one. -- case $file in -- */* | *\\*) . ${wrapperdot} ;; -- *) . ./${wrapperdot} ;; -+ case $wrapper in -+ */* | *\\*) . ${wrapper} ;; -+ *) . ./${wrapper} ;; - esac - - # Check the variables that should have been set. - if test -z "$notinst_deplibs"; then - $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - finalize=yes -@@ -5650,30 +6119,21 @@ - done - - relink_command= -- # To insure that "foo" is sourced, and not "foo.exe", -- # finese the cygwin/MSYS system by explicitly sourcing "foo." -- # which disallows the automatic-append-.exe behavior. -- case $build in -- *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; -- *) wrapperdot=${wrapper} ;; -- esac -+ # Note that it is not necessary on cygwin/mingw to append a dot to -+ # foo even if both foo and FILE.exe exist: automatic-append-.exe -+ # behavior happens only for exec(3), not for open(2)! Also, sourcing -+ # `FILE.' does not work on cygwin managed mounts. -+ # - # If there is no directory component, then add one. -- case $file in -- */* | *\\*) . ${wrapperdot} ;; -- *) . ./${wrapperdot} ;; -+ case $wrapper in -+ */* | *\\*) . ${wrapper} ;; -+ *) . ./${wrapper} ;; - esac - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - if test "$finalize" = yes && test -z "$run"; then -- tmpdir="/tmp" -- test -n "$TMPDIR" && tmpdir="$TMPDIR" -- tmpdir="$tmpdir/libtool-$$" -- if $mkdir "$tmpdir" && chmod 700 "$tmpdir"; then : -- else -- $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 -- continue -- fi -+ tmpdir=`func_mktempdir` - file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` - outputname="$tmpdir/$file" - # Replace the output file specification. -@@ -5697,7 +6157,7 @@ - fi - - # remove .exe since cygwin /usr/bin/install will append another -- # one anyways -+ # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in -@@ -5729,16 +6189,17 @@ - $show "$install_prog $file $oldlib" - $run eval "$install_prog \$file \$oldlib" || exit $? - -- if test -n "$stripme" && test -n "$striplib"; then -+ if test -n "$stripme" && test -n "$old_striplib"; then - $show "$old_striplib $oldlib" - $run eval "$old_striplib $oldlib" || exit $? - fi - - # Do each command in the postinstall commands. -- eval cmds=\"$old_postinstall_cmds\" -+ cmds=$old_postinstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done -@@ -5752,9 +6213,9 @@ - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - test -n "$run" && current_libdirs=" -n$current_libdirs" -- exec_cmd='$SHELL $0 --finish$current_libdirs' -+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else -- exit 0 -+ exit $EXIT_SUCCESS - fi - ;; - -@@ -5773,10 +6234,11 @@ - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. -- eval cmds=\"$finish_cmds\" -+ cmds=$finish_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || admincmds="$admincmds - $cmd" -@@ -5793,9 +6255,9 @@ - fi - - # Exit here if they wanted silent mode. -- exit 0 -+ test "$show" = : && exit $EXIT_SUCCESS - -- $echo "----------------------------------------------------------------------" -+ $echo "X----------------------------------------------------------------------" | $Xsed - $echo "Libraries have been installed in:" - for libdir in $libdirs; do - $echo " $libdir" -@@ -5828,8 +6290,8 @@ - $echo - $echo "See any operating system documentation about shared libraries for" - $echo "more information, such as the ld(1) and ld.so(8) manual pages." -- $echo "----------------------------------------------------------------------" -- exit 0 -+ $echo "X----------------------------------------------------------------------" | $Xsed -+ exit $EXIT_SUCCESS - ;; - - # libtool execute mode -@@ -5841,7 +6303,7 @@ - if test -z "$cmd"; then - $echo "$modename: you must specify a COMMAND" 1>&2 - $echo "$help" -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Handle -dlopen flags immediately. -@@ -5849,7 +6311,7 @@ - if test ! -f "$file"; then - $echo "$modename: \`$file' is not a file" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - dir= -@@ -5860,7 +6322,7 @@ - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Read the libtool library. -@@ -5887,7 +6349,7 @@ - dir="$dir/$objdir" - else - $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - ;; - -@@ -5967,7 +6429,7 @@ - $echo "export $shlibpath_var" - fi - $echo "$cmd$args" -- exit 0 -+ exit $EXIT_SUCCESS - fi - ;; - -@@ -5995,7 +6457,7 @@ - if test -z "$rm"; then - $echo "$modename: you must specify an RM program" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - rmdirs= -@@ -6045,15 +6507,24 @@ - rmfiles="$rmfiles $objdir/$n" - done - test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" -- test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" - -- if test "$mode" = uninstall; then -+ case "$mode" in -+ clean) -+ case " $library_names " in -+ # " " in the beginning catches empty $dlname -+ *" $dlname "*) ;; -+ *) rmfiles="$rmfiles $objdir/$dlname" ;; -+ esac -+ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" -+ ;; -+ uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. -- eval cmds=\"$postuninstall_cmds\" -+ cmds=$postuninstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" - if test "$?" -ne 0 && test "$rmforce" != yes; then -@@ -6065,10 +6536,11 @@ - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. -- eval cmds=\"$old_postuninstall_cmds\" -+ cmds=$old_postuninstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" - if test "$?" -ne 0 && test "$rmforce" != yes; then -@@ -6078,7 +6550,8 @@ - IFS="$save_ifs" - fi - # FIXME: should reinstall the best remaining shared library. -- fi -+ ;; -+ esac - fi - ;; - -@@ -6107,7 +6580,7 @@ - if test "$mode" = clean ; then - noexename=$name - case $file in -- *.exe) -+ *.exe) - file=`$echo $file|${SED} 's,.exe$,,'` - noexename=`$echo $name|${SED} 's,.exe$,,'` - # $file with .exe has already been added to rmfiles, -@@ -6152,20 +6625,20 @@ - "") - $echo "$modename: you must specify a MODE" 1>&2 - $echo "$generic_help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - - if test -z "$exec_cmd"; then - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$generic_help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - fi # test -z "$show_help" - - if test -n "$exec_cmd"; then - eval exec $exec_cmd -- exit 1 -+ exit $EXIT_FAILURE - fi - - # We need to display help for each of the modes. -@@ -6201,7 +6674,7 @@ - a more detailed description of MODE. - - Report bugs to <bug-libtool@gnu.org>." -- exit 0 -+ exit $EXIT_SUCCESS - ;; - - clean) -@@ -6313,6 +6786,8 @@ - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects -+ -precious-files-regex REGEX -+ don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -@@ -6354,14 +6829,14 @@ - *) - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - - $echo - $echo "Try \`$modename --help' for more information about other modes." - --exit 0 -+exit $? - - # The TAGs below are defined such that we never get into a situation - # in which we disable both kinds of libraries. Given conflicting -@@ -6375,12 +6850,11 @@ - # configuration. But we'll never go from static-only to shared-only. - - # ### BEGIN LIBTOOL TAG CONFIG: disable-shared --build_libtool_libs=no --build_old_libs=yes -+disable_libs=shared - # ### END LIBTOOL TAG CONFIG: disable-shared - - # ### BEGIN LIBTOOL TAG CONFIG: disable-static --build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` -+disable_libs=static - # ### END LIBTOOL TAG CONFIG: disable-static - - # Local Variables: diff --git a/devel/kdevelop/files/patch-fix_qmake_parser b/devel/kdevelop/files/patch-fix_qmake_parser deleted file mode 100644 index a0d8102928b6..000000000000 --- a/devel/kdevelop/files/patch-fix_qmake_parser +++ /dev/null @@ -1,6341 +0,0 @@ -diff -ruN buildtools/lib/parsers/qmake.orig/FlexLexer.h buildtools/lib/parsers/qmake/FlexLexer.h ---- buildtools/lib/parsers/qmake.orig/FlexLexer.h Thu Jan 1 01:00:00 1970 -+++ buildtools/lib/parsers/qmake/FlexLexer.h Thu Mar 22 21:48:49 2007 -@@ -0,0 +1,205 @@ -+ -+// -*-C++-*- -+// FlexLexer.h -- define interfaces for lexical analyzer classes generated -+// by flex -+ -+// Copyright (c) 1993 The Regents of the University of California. -+// All rights reserved. -+// -+// This code is derived from software contributed to Berkeley by -+// Kent Williams and Tom Epperly. -+// -+// Redistribution and use in source and binary forms, with or without -+// modification, are permitted provided that the following conditions -+// are met: -+ -+// 1. Redistributions of source code must retain the above copyright -+// notice, this list of conditions and the following disclaimer. -+// 2. Redistributions in binary form must reproduce the above copyright -+// notice, this list of conditions and the following disclaimer in the -+// documentation and/or other materials provided with the distribution. -+ -+// Neither the name of the University nor the names of its contributors -+// may be used to endorse or promote products derived from this software -+// without specific prior written permission. -+ -+// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR -+// IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED -+// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -+// PURPOSE. -+ -+// This file defines FlexLexer, an abstract class which specifies the -+// external interface provided to flex C++ lexer objects, and yyFlexLexer, -+// which defines a particular lexer class. -+// -+// If you want to create multiple lexer classes, you use the -P flag -+// to rename each yyFlexLexer to some other xxFlexLexer. You then -+// include <FlexLexer.h> in your other sources once per lexer class: -+// -+// #undef yyFlexLexer -+// #define yyFlexLexer xxFlexLexer -+// #include <FlexLexer.h> -+// -+// #undef yyFlexLexer -+// #define yyFlexLexer zzFlexLexer -+// #include <FlexLexer.h> -+// ... -+ -+#ifndef __FLEX_LEXER_H -+// Never included before - need to define base class. -+#define __FLEX_LEXER_H -+ -+#include <iostream> -+# ifndef FLEX_STD -+# define FLEX_STD std:: -+# endif -+ -+extern "C++" { -+ -+struct yy_buffer_state; -+typedef int yy_state_type; -+ -+class FlexLexer { -+public: -+ virtual ~FlexLexer() { } -+ -+ const char* YYText() const { return yytext; } -+ int YYLeng() const { return yyleng; } -+ -+ virtual void -+ yy_switch_to_buffer( struct yy_buffer_state* new_buffer ) = 0; -+ virtual struct yy_buffer_state* -+ yy_create_buffer( FLEX_STD istream* s, int size ) = 0; -+ virtual void yy_delete_buffer( struct yy_buffer_state* b ) = 0; -+ virtual void yyrestart( FLEX_STD istream* s ) = 0; -+ -+ virtual int yylex() = 0; -+ -+ // Call yylex with new input/output sources. -+ int yylex( FLEX_STD istream* new_in, FLEX_STD ostream* new_out = 0 ) -+ { -+ switch_streams( new_in, new_out ); -+ return yylex(); -+ } -+ -+ // Switch to new input/output streams. A nil stream pointer -+ // indicates "keep the current one". -+ virtual void switch_streams( FLEX_STD istream* new_in = 0, -+ FLEX_STD ostream* new_out = 0 ) = 0; -+ -+ int lineno() const { return yylineno; } -+ -+ int debug() const { return yy_flex_debug; } -+ void set_debug( int flag ) { yy_flex_debug = flag; } -+ -+protected: -+ char* yytext; -+ int yyleng; -+ int yylineno; // only maintained if you use %option yylineno -+ int yy_flex_debug; // only has effect with -d or "%option debug" -+}; -+ -+} -+#endif -+ -+#if defined(yyFlexLexer) || ! defined(yyFlexLexerOnce) -+// Either this is the first time through (yyFlexLexerOnce not defined), -+// or this is a repeated include to define a different flavor of -+// yyFlexLexer, as discussed in the flex man page. -+#define yyFlexLexerOnce -+ -+extern "C++" { -+ -+class yyFlexLexer : public FlexLexer { -+public: -+ // arg_yyin and arg_yyout default to the cin and cout, but we -+ // only make that assignment when initializing in yylex(). -+ yyFlexLexer( FLEX_STD istream* arg_yyin = 0, FLEX_STD ostream* arg_yyout = 0 ); -+ -+ virtual ~yyFlexLexer(); -+ -+ void yy_switch_to_buffer( struct yy_buffer_state* new_buffer ); -+ struct yy_buffer_state* yy_create_buffer( FLEX_STD istream* s, int size ); -+ void yy_delete_buffer( struct yy_buffer_state* b ); -+ void yyrestart( FLEX_STD istream* s ); -+ -+ void yypush_buffer_state( struct yy_buffer_state* new_buffer ); -+ void yypop_buffer_state(void); -+ -+ virtual int yylex(); -+ virtual void switch_streams( FLEX_STD istream* new_in, FLEX_STD ostream* new_out ); -+ -+protected: -+ virtual int LexerInput( char* buf, int max_size ); -+ virtual void LexerOutput( const char* buf, int size ); -+ virtual void LexerError( const char* msg ); -+ -+ void yyunput( int c, char* buf_ptr ); -+ int yyinput(); -+ -+ void yy_load_buffer_state(); -+ void yy_init_buffer( struct yy_buffer_state* b, FLEX_STD istream* s ); -+ void yy_flush_buffer( struct yy_buffer_state* b ); -+ -+ int yy_start_stack_ptr; -+ int yy_start_stack_depth; -+ int* yy_start_stack; -+ -+ void yy_push_state( int new_state ); -+ void yy_pop_state(); -+ int yy_top_state(); -+ -+ yy_state_type yy_get_previous_state(); -+ yy_state_type yy_try_NUL_trans( yy_state_type current_state ); -+ int yy_get_next_buffer(); -+ -+ FLEX_STD istream* yyin; // input source for default LexerInput -+ FLEX_STD ostream* yyout; // output sink for default LexerOutput -+ -+ // yy_hold_char holds the character lost when yytext is formed. -+ char yy_hold_char; -+ -+ // Number of characters read into yy_ch_buf. -+ int yy_n_chars; -+ -+ // Points to current character in buffer. -+ char* yy_c_buf_p; -+ -+ int yy_init; // whether we need to initialize -+ int yy_start; // start state number -+ -+ // Flag which is used to allow yywrap()'s to do buffer switches -+ // instead of setting up a fresh yyin. A bit of a hack ... -+ int yy_did_buffer_switch_on_eof; -+ -+ -+ size_t yy_buffer_stack_top; /**< index of top of stack. */ -+ size_t yy_buffer_stack_max; /**< capacity of stack. */ -+ struct yy_buffer_state ** yy_buffer_stack; /**< Stack as an array. */ -+ void yyensure_buffer_stack(void); -+ -+ // The following are not always needed, but may be depending -+ // on use of certain flex features (like REJECT or yymore()). -+ -+ yy_state_type yy_last_accepting_state; -+ char* yy_last_accepting_cpos; -+ -+ yy_state_type* yy_state_buf; -+ yy_state_type* yy_state_ptr; -+ -+ char* yy_full_match; -+ int* yy_full_state; -+ int yy_full_lp; -+ -+ int yy_lp; -+ int yy_looking_for_trail_begin; -+ -+ int yy_more_flag; -+ int yy_more_len; -+ int yy_more_offset; -+ int yy_prev_more_offset; -+}; -+ -+} -+ -+#endif -diff -u --exclude=.svn -Nur kdev_3.4.0.org/buildtools/lib/parsers/qmake/location.hh kdev_3.4.0/buildtools/lib/parsers/qmake/location.hh ---- buildtools/lib/parsers/qmake/location.hh 1970-01-01 01:00:00.000000000 +0100 -+++ buildtools/lib/parsers/qmake/location.hh 2007-02-07 20:35:17.000000000 +0100 -@@ -0,0 +1,145 @@ -+/* A Bison parser, made by GNU Bison 2.3. */ -+ -+/* Locations for Bison parsers in C++ -+ -+ Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2, or (at your option) -+ any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin Street, Fifth Floor, -+ Boston, MA 02110-1301, USA. */ -+ -+/* As a special exception, you may create a larger work that contains -+ part or all of the Bison parser skeleton and distribute that work -+ under terms of your choice, so long as that work isn't itself a -+ parser generator using the skeleton or a modified version thereof -+ as a parser skeleton. Alternatively, if you modify or redistribute -+ the parser skeleton itself, you may (at your option) remove this -+ special exception, which will cause the skeleton and the resulting -+ Bison output files to be licensed under the GNU General Public -+ License without this special exception. -+ -+ This special exception was added by the Free Software Foundation in -+ version 2.2 of Bison. */ -+ -+/** -+ ** \file location.hh -+ ** Define the QMake::location class. -+ */ -+ -+#ifndef BISON_LOCATION_HH -+# define BISON_LOCATION_HH -+ -+# include <iostream> -+# include <string> -+# include "position.hh" -+ -+namespace QMake -+{ -+ -+ /// Abstract a location. -+ class location -+ { -+ public: -+ -+ /// Construct a location. -+ location () -+ : begin (), end () -+ { -+ } -+ -+ -+ /// Initialization. -+ inline void initialize (std::string* fn) -+ { -+ begin.initialize (fn); -+ end = begin; -+ } -+ -+ /** \name Line and Column related manipulators -+ ** \{ */ -+ public: -+ /// Reset initial location to final location. -+ inline void step () -+ { -+ begin = end; -+ } -+ -+ /// Extend the current location to the COUNT next columns. -+ inline void columns (unsigned int count = 1) -+ { -+ end += count; -+ } -+ -+ /// Extend the current location to the COUNT next lines. -+ inline void lines (unsigned int count = 1) -+ { -+ end.lines (count); -+ } -+ /** \} */ -+ -+ -+ public: -+ /// Beginning of the located region. -+ position begin; -+ /// End of the located region. -+ position end; -+ }; -+ -+ /// Join two location objects to create a location. -+ inline const location operator+ (const location& begin, const location& end) -+ { -+ location res = begin; -+ res.end = end.end; -+ return res; -+ } -+ -+ /// Add two location objects. -+ inline const location operator+ (const location& begin, unsigned int width) -+ { -+ location res = begin; -+ res.columns (width); -+ return res; -+ } -+ -+ /// Add and assign a location. -+ inline location& operator+= (location& res, unsigned int width) -+ { -+ res.columns (width); -+ return res; -+ } -+ -+ /** \brief Intercept output stream redirection. -+ ** \param ostr the destination output stream -+ ** \param loc a reference to the location to redirect -+ ** -+ ** Avoid duplicate information. -+ */ -+ inline std::ostream& operator<< (std::ostream& ostr, const location& loc) -+ { -+ position last = loc.end - 1; -+ ostr << loc.begin; -+ if (last.filename -+ && (!loc.begin.filename -+ || *loc.begin.filename != *last.filename)) -+ ostr << '-' << last; -+ else if (loc.begin.line != last.line) -+ ostr << '-' << last.line << '.' << last.column; -+ else if (loc.begin.column != last.column) -+ ostr << '-' << last.column; -+ return ostr; -+ } -+ -+} -+ -+#endif // not BISON_LOCATION_HH -diff -ruN buildtools/lib/parsers/qmake.orig/Makefile.in buildtools/lib/parsers/qmake/Makefile.in ---- buildtools/lib/parsers/qmake.orig/Makefile.in Thu Jan 25 15:48:03 2007 -+++ buildtools/lib/parsers/qmake/Makefile.in Thu Mar 22 21:48:26 2007 -@@ -1,4 +1,4 @@ --# Makefile.in generated by automake 1.9.5 from Makefile.am. -+# Makefile.in generated by automake 1.9.6 from Makefile.am. - # KDE tags expanded automatically by am_edit - $Revision: 483858 $ - # @configure_input@ - -@@ -22,8 +22,6 @@ - #SUBDIRS = tests - - --SOURCES = $(libkdevqmakeparser_la_SOURCES) -- - srcdir = @srcdir@ - top_srcdir = @top_srcdir@ - VPATH = @srcdir@ -@@ -47,7 +45,7 @@ - build_triplet = @build@ - host_triplet = @host@ - target_triplet = @target@ --DIST_COMMON = $(kdevelopbuildtoolsinclude_HEADERS) \ -+DIST_COMMON = $(kdevelopbuildtoolsinclude_HEADERS) $(noinst_HEADERS) \ - $(srcdir)/../../../../Doxyfile.am $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in - subdir = buildtools/lib/parsers/qmake -@@ -70,13 +68,13 @@ - libLTLIBRARIES_INSTALL = $(INSTALL) - LTLIBRARIES = $(lib_LTLIBRARIES) - libkdevqmakeparser_la_LIBADD = --am_libkdevqmakeparser_la_OBJECTS = qmakeast.lo qmakedriver.lo \ -- qmake_yacc.lo qmakeastvisitor.lo -+am_libkdevqmakeparser_la_OBJECTS = qmake_lex.lo qmake_yacc.lo \ -+ qmakeast.lo qmakeastvisitor.lo qmakedriver.lo - #>- libkdevqmakeparser_la_OBJECTS = $(am_libkdevqmakeparser_la_OBJECTS) - #>+ 5 - libkdevqmakeparser_la_final_OBJECTS = libkdevqmakeparser_la.all_cpp.lo --libkdevqmakeparser_la_nofinal_OBJECTS = qmakeast.lo qmakedriver.lo \ -- qmake_yacc.lo qmakeastvisitor.lo -+libkdevqmakeparser_la_nofinal_OBJECTS = qmake_lex.lo qmake_yacc.lo \ -+ qmakeast.lo qmakeastvisitor.lo qmakedriver.lo - @KDE_USE_FINAL_FALSE@libkdevqmakeparser_la_OBJECTS = $(libkdevqmakeparser_la_nofinal_OBJECTS) - @KDE_USE_FINAL_TRUE@libkdevqmakeparser_la_OBJECTS = $(libkdevqmakeparser_la_final_OBJECTS) - DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -@@ -103,7 +101,7 @@ - SOURCES = $(libkdevqmakeparser_la_SOURCES) - DIST_SOURCES = $(libkdevqmakeparser_la_SOURCES) - kdevelopbuildtoolsincludeHEADERS_INSTALL = $(INSTALL_HEADER) --HEADERS = $(kdevelopbuildtoolsinclude_HEADERS) -+HEADERS = $(kdevelopbuildtoolsinclude_HEADERS) $(noinst_HEADERS) - ETAGS = etags - CTAGS = ctags - #>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -@@ -131,9 +129,6 @@ - CXXDEPMODE = @CXXDEPMODE@ - CXXFLAGS = @CXXFLAGS@ - CYGPATH_W = @CYGPATH_W@ --DB3INCLUDES = @DB3INCLUDES@ --DB3LDFLAGS = @DB3LDFLAGS@ --DB3LIB = @DB3LIB@ - DCOPIDL = @DCOPIDL@ - DCOPIDL2CPP = @DCOPIDL2CPP@ - DCOPIDLNG = @DCOPIDLNG@ -@@ -300,7 +295,15 @@ - build_cpu = @build_cpu@ - build_os = @build_os@ - build_vendor = @build_vendor@ -+buildtools_SUBDIR_included_FALSE = @buildtools_SUBDIR_included_FALSE@ -+buildtools_SUBDIR_included_TRUE = @buildtools_SUBDIR_included_TRUE@ - datadir = @datadir@ -+doc_SUBDIR_included_FALSE = @doc_SUBDIR_included_FALSE@ -+doc_SUBDIR_included_TRUE = @doc_SUBDIR_included_TRUE@ -+editors_SUBDIR_included_FALSE = @editors_SUBDIR_included_FALSE@ -+editors_SUBDIR_included_TRUE = @editors_SUBDIR_included_TRUE@ -+embedded_SUBDIR_included_FALSE = @embedded_SUBDIR_included_FALSE@ -+embedded_SUBDIR_included_TRUE = @embedded_SUBDIR_included_TRUE@ - exec_prefix = @exec_prefix@ - gmake_prog = @gmake_prog@ - host = @host@ -@@ -384,19 +387,32 @@ - kde_wallpaperdir = @kde_wallpaperdir@ - kde_widgetdir = @kde_widgetdir@ - kdeinitdir = @kdeinitdir@ --kdelibs_doxydir = @kdelibs_doxydir@ -+kdevdesigner_SUBDIR_included_FALSE = @kdevdesigner_SUBDIR_included_FALSE@ -+kdevdesigner_SUBDIR_included_TRUE = @kdevdesigner_SUBDIR_included_TRUE@ -+languages_SUBDIR_included_FALSE = @languages_SUBDIR_included_FALSE@ -+languages_SUBDIR_included_TRUE = @languages_SUBDIR_included_TRUE@ -+lib_SUBDIR_included_FALSE = @lib_SUBDIR_included_FALSE@ -+lib_SUBDIR_included_TRUE = @lib_SUBDIR_included_TRUE@ - libdir = @libdir@ - libexecdir = @libexecdir@ - localstatedir = @localstatedir@ - mandir = @mandir@ -+mimetypes_SUBDIR_included_FALSE = @mimetypes_SUBDIR_included_FALSE@ -+mimetypes_SUBDIR_included_TRUE = @mimetypes_SUBDIR_included_TRUE@ - mkdir_p = @mkdir_p@ - oldincludedir = @oldincludedir@ -+parts_SUBDIR_included_FALSE = @parts_SUBDIR_included_FALSE@ -+parts_SUBDIR_included_TRUE = @parts_SUBDIR_included_TRUE@ -+pics_SUBDIR_included_FALSE = @pics_SUBDIR_included_FALSE@ -+pics_SUBDIR_included_TRUE = @pics_SUBDIR_included_TRUE@ - prefix = @prefix@ - program_transform_name = @program_transform_name@ - qt_includes = @qt_includes@ - qt_libraries = @qt_libraries@ - sbindir = @sbindir@ - sharedstatedir = @sharedstatedir@ -+src_SUBDIR_included_FALSE = @src_SUBDIR_included_FALSE@ -+src_SUBDIR_included_TRUE = @src_SUBDIR_included_TRUE@ - sysconfdir = @sysconfdir@ - tar = @tar@ - target = @target@ -@@ -406,6 +422,8 @@ - target_vendor = @target_vendor@ - unsermake_enable_pch_FALSE = @unsermake_enable_pch_FALSE@ - unsermake_enable_pch_TRUE = @unsermake_enable_pch_TRUE@ -+vcs_SUBDIR_included_FALSE = @vcs_SUBDIR_included_FALSE@ -+vcs_SUBDIR_included_TRUE = @vcs_SUBDIR_included_TRUE@ - x_includes = @x_includes@ - x_libraries = @x_libraries@ - xdg_appsdir = @xdg_appsdir@ -@@ -420,8 +438,8 @@ - #>- libkdevqmakeparser_la_LDFLAGS = -no-undefined $(all_libraries) $(LIB_KIO) - #>+ 1 - libkdevqmakeparser_la_LDFLAGS = -no-undefined $(KDE_NO_UNDEFINED) $(all_libraries) $(LIB_KIO) --libkdevqmakeparser_la_SOURCES = qmakeast.cpp qmakedriver.cpp qmake_yacc.cpp \ -- qmakeastvisitor.cpp -+libkdevqmakeparser_la_SOURCES = qmake_lex.cpp qmake_yacc.cpp qmakeast.cpp \ -+ qmakeastvisitor.cpp qmakedriver.cpp - - kdevelopbuildtoolsincludedir = $(includedir)/kdevelop/buildtools/parsers/qmake - kdevelopbuildtoolsinclude_HEADERS = qmakeast.h qmakedriver.h qmakeastvisitor.h -@@ -429,6 +447,7 @@ - DOXYGEN_REFERENCES = dcop interfaces kdecore kdefx kdeui khtml kmdi kio kjs kparts kutils - DOXYGEN_PROJECTNAME = KDevelop QMake parser - DOXYGEN_DOCDIRPREFIX = kdevparser -+noinst_HEADERS = qmake_lex.h - #>- all: all-am - #>+ 1 - all: docs-am all-am -@@ -444,9 +463,9 @@ - #>- exit 1;; \ - #>- esac; \ - #>- done; \ --#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign buildtools/lib/parsers/qmake/Makefile'; \ -+#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu buildtools/lib/parsers/qmake/Makefile'; \ - #>- cd $(top_srcdir) && \ --#>- $(AUTOMAKE) --foreign buildtools/lib/parsers/qmake/Makefile -+#>- $(AUTOMAKE) --gnu buildtools/lib/parsers/qmake/Makefile - #>+ 12 - @for dep in $?; do \ - case '$(am__configure_deps)' in \ -@@ -456,9 +475,9 @@ - exit 1;; \ - esac; \ - done; \ -- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign buildtools/lib/parsers/qmake/Makefile'; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu buildtools/lib/parsers/qmake/Makefile'; \ - cd $(top_srcdir) && \ -- $(AUTOMAKE) --foreign buildtools/lib/parsers/qmake/Makefile -+ $(AUTOMAKE) --gnu buildtools/lib/parsers/qmake/Makefile - cd $(top_srcdir) && perl admin/am_edit buildtools/lib/parsers/qmake/Makefile.in - .PRECIOUS: Makefile - Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -@@ -516,6 +535,7 @@ - distclean-compile: - -rm -f *.tab.c - -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qmake_lex.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qmake_yacc.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qmakeast.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qmakeastvisitor.Plo@am__quote@ -@@ -753,14 +773,12 @@ - - parser: - cd $(srcdir) ; \ -- bison -d qmake.yy -o qmake_yacc.cpp ; \ -- mv -f qmake_yacc.hpp qmake_yacc.h ; \ -+ bison -d qmake.yy -oqmake_yacc.cpp ; \ - flex -oqmake_lex.cpp qmake.ll - - parser_dbg: - cd $(srcdir) ; \ -- bison -d qmake.yy -r all -k -t -o qmake_yacc.cpp ; \ -- mv -f qmake_yacc.hpp qmake_yacc.h ; \ -+ bison -d qmake.yy -r all -k -t -oqmake_yacc.cpp ; \ - flex -d -oqmake_lex.cpp qmake.ll - apidox-am-yes: - @if test -z "$(DOXYGEN_EMPTY)"; then \ -@@ -958,7 +976,7 @@ - - - #>+ 2 --KDE_DIST=qmake_lex.cpp Mainpage.dox qmake_yacc.h Makefile.in Makefile.am -+KDE_DIST=location.hh qmake_yacc.hpp position.hh Mainpage.dox stack.hh Makefile.in Makefile.am - - #>+ 3 - clean-closures: -@@ -977,9 +995,9 @@ - exit 1;; \ - esac; \ - done; \ -- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign buildtools/lib/parsers/qmake/Makefile'; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu buildtools/lib/parsers/qmake/Makefile'; \ - cd $(top_srcdir) && \ -- $(AUTOMAKE) --foreign buildtools/lib/parsers/qmake/Makefile -+ $(AUTOMAKE) --gnu buildtools/lib/parsers/qmake/Makefile - cd $(top_srcdir) && perl admin/am_edit buildtools/lib/parsers/qmake/Makefile.in - - -@@ -990,7 +1008,7 @@ - bcheck: bcheck-am - - bcheck-am: -- @for i in $(kdevelopbuildtoolsinclude_HEADERS); do \ -+ @for i in $(kdevelopbuildtoolsinclude_HEADERS) ; do \ - if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ - echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ - echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ -@@ -1006,11 +1024,11 @@ - - - #>+ 11 --libkdevqmakeparser_la.all_cpp.cpp: $(srcdir)/Makefile.in $(srcdir)/qmakeast.cpp $(srcdir)/qmakedriver.cpp $(srcdir)/qmake_yacc.cpp $(srcdir)/qmakeastvisitor.cpp -+libkdevqmakeparser_la.all_cpp.cpp: $(srcdir)/Makefile.in $(srcdir)/qmake_lex.cpp $(srcdir)/qmake_yacc.cpp $(srcdir)/qmakeast.cpp $(srcdir)/qmakeastvisitor.cpp $(srcdir)/qmakedriver.cpp - @echo 'creating libkdevqmakeparser_la.all_cpp.cpp ...'; \ - rm -f libkdevqmakeparser_la.all_cpp.files libkdevqmakeparser_la.all_cpp.final; \ - echo "#define KDE_USE_FINAL 1" >> libkdevqmakeparser_la.all_cpp.final; \ -- for file in qmakeast.cpp qmakedriver.cpp qmake_yacc.cpp qmakeastvisitor.cpp ; do \ -+ for file in qmake_lex.cpp qmake_yacc.cpp qmakeast.cpp qmakeastvisitor.cpp qmakedriver.cpp ; do \ - echo "#include \"$$file\"" >> libkdevqmakeparser_la.all_cpp.files; \ - test ! -f $(srcdir)/$$file || egrep '^#pragma +implementation' $(srcdir)/$$file >> libkdevqmakeparser_la.all_cpp.final; \ - done; \ -diff -u --exclude=.svn -Nur kdev_3.4.0.org/buildtools/lib/parsers/qmake/position.hh kdev_3.4.0/buildtools/lib/parsers/qmake/position.hh ---- buildtools/lib/parsers/qmake/position.hh 1970-01-01 01:00:00.000000000 +0100 -+++ buildtools/lib/parsers/qmake/position.hh 2007-02-07 20:35:14.000000000 +0100 -@@ -0,0 +1,142 @@ -+/* A Bison parser, made by GNU Bison 2.3. */ -+ -+/* Positions for Bison parsers in C++ -+ -+ Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2, or (at your option) -+ any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin Street, Fifth Floor, -+ Boston, MA 02110-1301, USA. */ -+ -+/* As a special exception, you may create a larger work that contains -+ part or all of the Bison parser skeleton and distribute that work -+ under terms of your choice, so long as that work isn't itself a -+ parser generator using the skeleton or a modified version thereof -+ as a parser skeleton. Alternatively, if you modify or redistribute -+ the parser skeleton itself, you may (at your option) remove this -+ special exception, which will cause the skeleton and the resulting -+ Bison output files to be licensed under the GNU General Public -+ License without this special exception. -+ -+ This special exception was added by the Free Software Foundation in -+ version 2.2 of Bison. */ -+ -+/** -+ ** \file position.hh -+ ** Define the QMake::position class. -+ */ -+ -+#ifndef BISON_POSITION_HH -+# define BISON_POSITION_HH -+ -+# include <iostream> -+# include <string> -+ -+namespace QMake -+{ -+ /// Abstract a position. -+ class position -+ { -+ public: -+ -+ /// Construct a position. -+ position () -+ : filename (0), line (1), column (0) -+ { -+ } -+ -+ -+ /// Initialization. -+ inline void initialize (std::string* fn) -+ { -+ filename = fn; -+ line = 1; -+ column = 0; -+ } -+ -+ /** \name Line and Column related manipulators -+ ** \{ */ -+ public: -+ /// (line related) Advance to the COUNT next lines. -+ inline void lines (int count = 1) -+ { -+ column = 0; -+ line += count; -+ } -+ -+ /// (column related) Advance to the COUNT next columns. -+ inline void columns (int count = 1) -+ { -+ int leftmost = 0; -+ int current = column; -+ if (leftmost <= current + count) -+ column += count; -+ else -+ column = 0; -+ } -+ /** \} */ -+ -+ public: -+ /// File name to which this position refers. -+ std::string* filename; -+ /// Current line number. -+ unsigned int line; -+ /// Current column number. -+ unsigned int column; -+ }; -+ -+ /// Add and assign a position. -+ inline const position& -+ operator+= (position& res, const int width) -+ { -+ res.columns (width); -+ return res; -+ } -+ -+ /// Add two position objects. -+ inline const position -+ operator+ (const position& begin, const int width) -+ { -+ position res = begin; -+ return res += width; -+ } -+ -+ /// Add and assign a position. -+ inline const position& -+ operator-= (position& res, const int width) -+ { -+ return res += -width; -+ } -+ -+ /// Add two position objects. -+ inline const position -+ operator- (const position& begin, const int width) -+ { -+ return begin + -width; -+ } -+ -+ /** \brief Intercept output stream redirection. -+ ** \param ostr the destination output stream -+ ** \param pos a reference to the position to redirect -+ */ -+ inline std::ostream& -+ operator<< (std::ostream& ostr, const position& pos) -+ { -+ if (pos.filename) -+ ostr << *pos.filename << ':'; -+ return ostr << pos.line << '.' << pos.column; -+ } -+ -+} -+#endif // not BISON_POSITION_HH -diff -u --exclude=.svn -Nur kdev_3.4.0.org/buildtools/lib/parsers/qmake/qmakedriver.cpp kdev_3.4.0/buildtools/lib/parsers/qmake/qmakedriver.cpp ---- buildtools/lib/parsers/qmake/qmakedriver.cpp 2007-02-07 21:15:37.000000000 +0100 -+++ buildtools/lib/parsers/qmake/qmakedriver.cpp 2007-02-07 20:49:28.000000000 +0100 -@@ -20,57 +20,67 @@ - #include "qmakedriver.h" - #include "qmakeast.h" - --#include <stdio.h> - #include <qvaluestack.h> - #include <kio/netaccess.h> - --extern FILE *yyin, *yyout; --extern int yyparse(); --extern int yydebug; --typedef struct yy_buffer_state *YY_BUFFER_STATE; --extern YY_BUFFER_STATE yy_scan_string(const char*); --extern void yy_delete_buffer(YY_BUFFER_STATE); --extern QValueStack<QMake::ProjectAST *> projects; -+#include <iostream> -+#include <fstream> -+#include <sstream> -+ -+#include "qmake_lex.h" -+#include "qmake_yacc.hpp" - - namespace QMake { - --int Driver::parseFile(const char *fileName, ProjectAST **ast) -+int Driver::parseFile(const char *fileName, ProjectAST **ast, int debug) - { -- yyin = fopen(fileName, "r"); -- if (yyin == 0) -+ std::ifstream inf( fileName, std::ios::in ); -+ if ( !inf.is_open() ) - { - *ast = 0; - return 1; - } - // yydebug = 1; -- int ret = yyparse(); -- *ast = projects.top(); -+ Lexer l(&inf); -+ l.set_debug(debug); -+ int depth = 0; -+ QValueStack<ProjectAST*> stack; -+ Parser p(&l, stack, depth); -+ p.set_debug_level(debug); -+ int ret = p.parse(); -+ *ast = stack.top(); - (*ast)->setFileName(fileName); - return ret; - } - --int Driver::parseFile(QString fileName, ProjectAST **ast) -+int Driver::parseFile(QString fileName, ProjectAST **ast, int debug) - { -- return parseFile(fileName.ascii(), ast); -+ return parseFile(fileName.ascii(), ast, debug); - } - --int Driver::parseFile(KURL fileName, ProjectAST **ast) -+int Driver::parseFile(KURL fileName, ProjectAST **ast, int debug) - { - QString tmpFile; - int ret = 0; - if (KIO::NetAccess::download(fileName, tmpFile, 0)) -- ret = parseFile(tmpFile, ast); -+ ret = parseFile(tmpFile, ast, debug); - KIO::NetAccess::removeTempFile(tmpFile); - return ret; - } - --int Driver::parseString( const char* string, ProjectAST **ast ) -+int Driver::parseString( const char* string, ProjectAST **ast, int debug ) - { -- YY_BUFFER_STATE state = yy_scan_string( string ); -- int ret = yyparse(); -- *ast = projects.top(); -+ std::istringstream ins; -+ ins.str(string); -+ Lexer l(&ins); -+ l.set_debug(debug); -+ int depth = 0; -+ QValueStack<ProjectAST*> stack; -+ Parser p(&l, stack, depth); -+ p.set_debug_level(debug); -+ int ret = p.parse(); -+ *ast = stack.top(); - (*ast)->setFileName(""); -- yy_delete_buffer( state ); - return ret; - } - -diff -u --exclude=.svn -Nur kdev_3.4.0.org/buildtools/lib/parsers/qmake/qmakedriver.h kdev_3.4.0/buildtools/lib/parsers/qmake/qmakedriver.h ---- buildtools/lib/parsers/qmake/qmakedriver.h 2007-02-07 21:15:37.000000000 +0100 -+++ buildtools/lib/parsers/qmake/qmakedriver.h 2007-02-07 20:35:13.000000000 +0100 -@@ -20,10 +20,8 @@ - #ifndef QMAKEQMAKEDRIVER_H - #define QMAKEQMAKEDRIVER_H - --#include "qmakeast.h" -- --#include <qvaluelist.h> --#include <kurl.h> -+class QString; -+class KURL; - - namespace QMake { - -@@ -45,26 +43,11 @@ - initialize it on its own. - @return The result of parsing. Result is 0 on success and <> 0 on failure. - */ -- static int parseFile(const char *fileName, ProjectAST **ast); -- static int parseFile(QString fileName, ProjectAST **ast); -- static int parseFile(KURL fileName, ProjectAST **ast); -- static int parseString(const char* string, ProjectAST **ast); -- --/* template<class Op> -- static void walkAST(Op &op, const ProjectAST *ast) -- { --// op(ast); -- for (QValueList<QMake::AST*>::const_iterator it = ast->statements.constBegin(); -- it != ast->statements.constEnd(); ++it) -- { -- const AST *child = *it; -- if (child->nodeType() == AST::ProjectAST) -- walkAST<Op>(op, static_cast<const QMake::ProjectAST*>(child)); -- else -- op(child); -- } -- } --*/ -+ static int parseFile(const char *fileName, ProjectAST **ast, int debug); -+ static int parseFile(QString fileName, ProjectAST **ast, int debug); -+ static int parseFile(KURL fileName, ProjectAST **ast, int debug); -+ static int parseString(const char* string, ProjectAST **ast, int debug); -+ - }; - - } -diff -u --exclude=.svn -Nur kdev_3.4.0.org/buildtools/lib/parsers/qmake/qmake_lex.cpp kdev_3.4.0/buildtools/lib/parsers/qmake/qmake_lex.cpp ---- buildtools/lib/parsers/qmake/qmake_lex.cpp 2007-02-07 21:15:37.000000000 +0100 -+++ buildtools/lib/parsers/qmake/qmake_lex.cpp 2007-02-07 20:35:11.000000000 +0100 -@@ -14,13 +14,17 @@ - #define FLEX_BETA - #endif - -+ /* The c++ scanner is a mess. The FlexLexer.h header file relies on the -+ * following macro. This is required in order to pass the c++-multiple-scanners -+ * test in the regression suite. We get reports that it breaks inheritance. -+ * We will address this in a future release of flex, or omit the C++ scanner -+ * altogether. -+ */ -+ #define yyFlexLexer yyFlexLexer -+ - /* First, we deal with platform-specific or compiler-specific issues. */ - - /* begin standard C headers. */ --#include <stdio.h> --#include <string.h> --#include <errno.h> --#include <stdlib.h> - - /* end standard C headers. */ - -@@ -87,6 +91,13 @@ - - #endif /* ! FLEXINT_H */ - -+/* begin standard C++ headers. */ -+#include <iostream> -+#include <errno.h> -+#include <cstdlib> -+#include <cstring> -+/* end standard C++ headers. */ -+ - #ifdef __cplusplus - - /* The "const" storage-class-modifier is valid. */ -@@ -134,7 +145,7 @@ - #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - - /* Special action meaning "start processing a new file". */ --#define YY_NEW_FILE yyrestart(yyin ) -+#define YY_NEW_FILE yyrestart( yyin ) - - #define YY_END_OF_BUFFER_CHAR 0 - -@@ -154,13 +165,24 @@ - - extern int yyleng; - --extern FILE *yyin, *yyout; -- - #define EOB_ACT_CONTINUE_SCAN 0 - #define EOB_ACT_END_OF_FILE 1 - #define EOB_ACT_LAST_MATCH 2 - -- #define YY_LESS_LINENO(n) -+ /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires -+ * access to the local variable yy_act. Since yyless() is a macro, it would break -+ * existing scanners that call yyless() from OUTSIDE yylex. -+ * One obvious solution it to make yy_act a global. I tried that, and saw -+ * a 5% performance hit in a non-yylineno scanner, because yy_act is -+ * normally declared as a register variable-- so it is not worth it. -+ */ -+ #define YY_LESS_LINENO(n) \ -+ do { \ -+ int yyl;\ -+ for ( yyl = n; yyl < yyleng; ++yyl )\ -+ if ( yytext[yyl] == '\n' )\ -+ --yylineno;\ -+ }while(0) - - /* Return all but the first "n" matched characters back to the input stream. */ - #define yyless(n) \ -@@ -192,7 +214,8 @@ - #define YY_STRUCT_YY_BUFFER_STATE - struct yy_buffer_state - { -- FILE *yy_input_file; -+ -+ std::istream* yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ -@@ -253,11 +276,6 @@ - }; - #endif /* !YY_STRUCT_YY_BUFFER_STATE */ - --/* Stack of input buffers. */ --static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ --static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ --static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ -- - /* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". -@@ -273,39 +291,6 @@ - */ - #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - --/* yy_hold_char holds the character lost when yytext is formed. */ --static char yy_hold_char; --static int yy_n_chars; /* number of characters read into yy_ch_buf */ --int yyleng; -- --/* Points to current character in buffer. */ --static char *yy_c_buf_p = (char *) 0; --static int yy_init = 0; /* whether we need to initialize */ --static int yy_start = 0; /* start state number */ -- --/* Flag which is used to allow yywrap()'s to do buffer switches -- * instead of setting up a fresh yyin. A bit of a hack ... -- */ --static int yy_did_buffer_switch_on_eof; -- --void yyrestart (FILE *input_file ); --void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); --YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); --void yy_delete_buffer (YY_BUFFER_STATE b ); --void yy_flush_buffer (YY_BUFFER_STATE b ); --void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); --void yypop_buffer_state (void ); -- --static void yyensure_buffer_stack (void ); --static void yy_load_buffer_state (void ); --static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); -- --#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) -- --YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); --YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); --YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); -- - void *yyalloc (yy_size_t ); - void *yyrealloc (void *,yy_size_t ); - void yyfree (void * ); -@@ -317,7 +302,7 @@ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ -- yy_create_buffer(yyin,YY_BUF_SIZE ); \ -+ yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } -@@ -327,7 +312,7 @@ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ -- yy_create_buffer(yyin,YY_BUF_SIZE ); \ -+ yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } -@@ -341,21 +326,17 @@ - - typedef unsigned char YY_CHAR; - --FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -- --typedef int yy_state_type; -- --extern int yylineno; -- --int yylineno = 1; -- --extern char *yytext; - #define yytext_ptr yytext -+#define YY_INTERACTIVE - --static yy_state_type yy_get_previous_state (void ); --static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); --static int yy_get_next_buffer (void ); --static void yy_fatal_error (yyconst char msg[] ); -+#include <FlexLexer.h> -+int yyFlexLexer::yylex() -+ { -+ LexerError( "yyFlexLexer::yylex invoked but %option yyclass used" ); -+ return 0; -+ } -+ -+#define YY_DECL int QMake::Lexer::yylex() - - /* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. -@@ -376,24 +357,25 @@ - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; --static yyconst flex_int16_t yy_accept[79] = -+static yyconst flex_int16_t yy_accept[83] = - { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 24, - 1, 22, 5, 23, 19, 20, 5, 24, 5, 21, - 11, 24, 16, 18, 24, 9, 2, 9, 9, 24, - 2, 2, 6, 2, 24, 8, 1, 5, 5, 23, -- 14, 12, 13, 0, 17, 0, 4, 15, 9, 0, -- 2, 0, 9, 0, 9, 0, 7, 0, 3, 2, -- 3, 2, 6, 6, 6, 6, 2, 3, 0, 8, -- 9, 0, 9, 0, 0, 10, 0, 0 -+ 14, 12, 13, 0, 17, 0, 4, 4, 15, 9, -+ 0, 2, 0, 9, 0, 0, 9, 0, 7, 7, -+ 0, 3, 2, 3, 2, 6, 6, 6, 6, 2, -+ 3, 0, 8, 9, 0, 9, 0, 0, 10, 0, -+ 7, 0 - } ; - - static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, -+ 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -- 1, 4, 5, 6, 7, 8, 1, 1, 1, 9, -+ 1, 2, 5, 6, 7, 8, 1, 1, 1, 9, - 10, 11, 12, 1, 13, 14, 1, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 16, 1, 1, - 17, 1, 1, 1, 18, 18, 18, 18, 18, 18, -@@ -422,122 +404,104 @@ - - static yyconst flex_int32_t yy_meta[25] = - { 0, -- 1, 2, 3, 2, 1, 1, 1, 1, 1, 1, -+ 1, 2, 3, 4, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1 - } ; - --static yyconst flex_int16_t yy_base[92] = -+static yyconst flex_int16_t yy_base[96] = - { 0, -- 0, 0, 23, 41, 29, 30, 25, 36, 144, 285, -- 36, 285, 56, 0, 285, 285, 125, 124, 123, 51, -- 285, 47, 285, 285, 122, 119, 50, 118, 77, 95, -- 80, 81, 54, 87, 126, 120, 61, 0, 0, 0, -- 285, 285, 285, 88, 285, 98, 285, 285, 106, 93, -- 101, 104, 113, 67, 131, 74, 285, 149, 285, 109, -- 72, 116, 0, 91, 0, 102, 120, 0, 56, 52, -- 167, 185, 203, 124, 221, 239, 127, 285, 258, 261, -- 264, 58, 40, 266, 269, 271, 273, 275, 278, 280, -- 282 -+ 0, 0, 23, 41, 26, 29, 31, 36, 158, 202, -+ 155, 202, 56, 0, 202, 202, 139, 138, 137, 30, -+ 202, 50, 202, 202, 135, 130, 48, 47, 77, 95, -+ 55, 56, 71, 70, 137, 131, 131, 0, 0, 0, -+ 202, 202, 202, 35, 202, 80, 202, 128, 202, 82, -+ 76, 84, 84, 83, 98, 90, 116, 90, 202, 102, -+ 134, 202, 101, 107, 105, 0, 111, 0, 120, 114, -+ 0, 55, 49, 121, 123, 126, 124, 142, 144, 132, -+ 202, 202, 163, 167, 171, 37, 175, 177, 181, 183, -+ 187, 189, 193, 195, 197 - - } ; - --static yyconst flex_int16_t yy_def[92] = -+static yyconst flex_int16_t yy_def[96] = - { 0, -- 78, 1, 79, 79, 4, 4, 80, 80, 78, 78, -- 78, 78, 78, 81, 78, 78, 13, 78, 13, 78, -- 78, 78, 78, 78, 78, 82, 78, 83, 84, 82, -- 85, 78, 86, 85, 87, 87, 78, 13, 13, 81, -- 78, 78, 78, 78, 78, 78, 78, 78, 82, 82, -- 78, 88, 89, 83, 84, 88, 78, 84, 78, 85, -- 88, 78, 90, 86, 90, 86, 85, 90, 87, 87, -- 89, 91, 89, 89, 91, 91, 91, 0, 78, 78, -- 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, -- 78 -+ 82, 1, 83, 83, 4, 4, 84, 84, 82, 82, -+ 82, 82, 82, 85, 82, 82, 13, 82, 13, 82, -+ 82, 82, 82, 82, 82, 86, 82, 87, 88, 86, -+ 89, 82, 90, 89, 91, 91, 82, 13, 13, 85, -+ 82, 82, 82, 82, 82, 82, 82, 82, 82, 86, -+ 86, 82, 92, 93, 94, 87, 88, 92, 82, 92, -+ 88, 82, 89, 92, 82, 95, 90, 95, 90, 89, -+ 95, 91, 91, 93, 94, 93, 93, 94, 94, 94, -+ 82, 0, 82, 82, 82, 82, 82, 82, 82, 82, -+ 82, 82, 82, 82, 82 - - } ; - --static yyconst flex_int16_t yy_nxt[310] = -+static yyconst flex_int16_t yy_nxt[227] = - { 0, -- 10, 11, 12, 11, 13, 10, 14, 13, 15, 16, -+ 10, 11, 12, 10, 13, 10, 14, 13, 15, 16, - 17, 18, 19, 10, 13, 20, 21, 13, 22, 13, -- 23, 10, 24, 25, 27, 12, 27, 10, 28, 29, -- 32, 34, 32, 34, 36, 33, 33, 37, 10, 37, -- 53, 30, 31, 12, 31, 36, 28, 29, 46, 47, -- 46, 51, 44, 51, 44, 65, 52, 65, 49, 30, -- 38, 70, 37, 38, 37, 70, 38, 38, 39, 38, -- 38, 45, 66, 38, 57, 38, 57, 38, 56, 57, -- 56, 60, 62, 60, 62, 54, 61, 63, 67, 44, -- 67, 44, 65, 68, 65, 58, 46, 47, 46, 46, -- -- 47, 46, 51, 65, 51, 65, 57, 52, 45, 66, -- 60, 50, 60, 50, 72, 61, 72, 62, 73, 62, -- 66, 67, 63, 67, 50, 78, 68, 78, 78, 70, -- 78, 74, 56, 57, 56, 70, 54, 50, 48, 43, -- 42, 41, 74, 78, 78, 77, 78, 78, 78, 58, -- 56, 57, 56, 78, 78, 78, 78, 78, 78, 78, -- 78, 78, 78, 78, 78, 78, 78, 58, 72, 78, -- 72, 78, 73, 78, 78, 78, 78, 78, 78, 78, -- 78, 78, 78, 78, 78, 74, 72, 78, 72, 78, -- 76, 78, 78, 78, 78, 78, 78, 78, 78, 78, -- -- 78, 78, 78, 77, 72, 78, 72, 78, 73, 78, -- 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, -- 78, 74, 72, 78, 72, 78, 76, 78, 78, 78, -- 78, 78, 78, 78, 78, 78, 78, 78, 78, 77, -- 72, 78, 72, 78, 76, 78, 78, 78, 78, 78, -- 78, 78, 78, 78, 78, 78, 78, 77, 26, 26, -- 26, 35, 35, 35, 40, 40, 55, 55, 55, 59, -- 59, 64, 64, 69, 69, 56, 56, 56, 71, 71, -- 65, 65, 75, 75, 9, 78, 78, 78, 78, 78, -- 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, -- -- 78, 78, 78, 78, 78, 78, 78, 78, 78 -+ 23, 10, 24, 25, 27, 12, 10, 32, 28, 29, -+ 34, 44, 33, 10, 10, 33, 44, 50, 10, 10, -+ 36, 30, 31, 12, 10, 36, 28, 29, 55, 52, -+ 45, 46, 47, 48, 53, 45, 63, 65, 73, 30, -+ 38, 64, 66, 38, 73, 56, 38, 38, 39, 38, -+ 38, 70, 68, 38, 68, 38, 71, 38, 58, 59, -+ 60, 46, 47, 48, 75, 52, 59, 60, 76, 69, -+ 53, 82, 59, 60, 51, 61, 46, 47, 48, 75, -+ -+ 51, 77, 63, 79, 81, 60, 65, 64, 56, 59, -+ 60, 66, 68, 51, 68, 70, 80, 58, 59, 60, -+ 71, 68, 75, 68, 75, 82, 76, 75, 79, 69, -+ 47, 76, 37, 82, 61, 58, 59, 60, 69, 77, -+ 73, 80, 77, 75, 77, 75, 73, 79, 51, 79, -+ 80, 49, 61, 43, 42, 41, 37, 82, 82, 82, -+ 80, 82, 80, 26, 26, 26, 26, 35, 35, 35, -+ 35, 40, 40, 82, 40, 54, 54, 57, 57, 57, -+ 57, 62, 62, 67, 67, 82, 67, 72, 72, 58, -+ 58, 58, 58, 74, 74, 78, 78, 68, 68, 82, -+ -+ 68, 9, 82, 82, 82, 82, 82, 82, 82, 82, -+ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, -+ 82, 82, 82, 82, 82, 82 - } ; - --static yyconst flex_int16_t yy_chk[310] = -+static yyconst flex_int16_t yy_chk[227] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -- 1, 1, 1, 1, 3, 3, 3, 7, 3, 3, -- 5, 6, 5, 6, 7, 5, 6, 11, 8, 11, -- 83, 3, 4, 4, 4, 8, 4, 4, 22, 22, -- 22, 27, 20, 27, 20, 33, 27, 33, 82, 4, -- 13, 70, 37, 13, 37, 69, 13, 13, 13, 13, -- 13, 20, 33, 13, 61, 13, 56, 13, 29, 29, -- 29, 31, 32, 31, 32, 54, 31, 32, 34, 44, -- 34, 44, 64, 34, 64, 29, 30, 30, 30, 46, -- -- 46, 46, 51, 66, 51, 66, 52, 51, 44, 64, -- 60, 50, 60, 30, 53, 60, 53, 62, 53, 62, -- 66, 67, 62, 67, 49, 74, 67, 74, 77, 36, -- 77, 53, 55, 55, 55, 35, 28, 26, 25, 19, -- 18, 17, 74, 9, 0, 77, 0, 0, 0, 55, -- 58, 58, 58, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 58, 71, 0, -- 71, 0, 71, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 71, 72, 0, 72, 0, -- 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- -- 0, 0, 0, 72, 73, 0, 73, 0, 73, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 73, 75, 0, 75, 0, 75, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, -- 76, 0, 76, 0, 76, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 76, 79, 79, -- 79, 80, 80, 80, 81, 81, 84, 84, 84, 85, -- 85, 86, 86, 87, 87, 88, 88, 88, 89, 89, -- 90, 90, 91, 91, 78, 78, 78, 78, 78, 78, -- 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, -- -- 78, 78, 78, 78, 78, 78, 78, 78, 78 -+ 1, 1, 1, 1, 3, 3, 3, 5, 3, 3, -+ 6, 20, 5, 7, 7, 6, 44, 86, 8, 8, -+ 7, 3, 4, 4, 4, 8, 4, 4, 28, 27, -+ 20, 22, 22, 22, 27, 44, 31, 32, 73, 4, -+ 13, 31, 32, 13, 72, 28, 13, 13, 13, 13, -+ 13, 34, 33, 13, 33, 13, 34, 13, 29, 29, -+ 29, 46, 46, 46, 54, 52, 53, 53, 54, 33, -+ 52, 56, 58, 58, 51, 29, 30, 30, 30, 55, -+ -+ 50, 54, 63, 55, 60, 60, 65, 63, 56, 64, -+ 64, 65, 67, 30, 67, 70, 55, 57, 57, 57, -+ 70, 69, 74, 69, 75, 77, 74, 76, 75, 67, -+ 48, 76, 37, 80, 57, 61, 61, 61, 69, 74, -+ 36, 75, 77, 78, 76, 79, 35, 78, 26, 79, -+ 80, 25, 61, 19, 18, 17, 11, 9, 0, 0, -+ 78, 0, 79, 83, 83, 83, 83, 84, 84, 84, -+ 84, 85, 85, 0, 85, 87, 87, 88, 88, 88, -+ 88, 89, 89, 90, 90, 0, 90, 91, 91, 92, -+ 92, 92, 92, 93, 93, 94, 94, 95, 95, 0, -+ -+ 95, 82, 82, 82, 82, 82, 82, 82, 82, 82, -+ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, -+ 82, 82, 82, 82, 82, 82 - } ; - --static yy_state_type yy_last_accepting_state; --static char *yy_last_accepting_cpos; -- --extern int yy_flex_debug; --int yy_flex_debug = 0; -+/* Table of booleans, true if rule could match eol. */ -+static yyconst flex_int32_t yy_rule_can_match_eol[25] = -+ { 0, -+0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 1, 0, 0, }; - - /* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. -@@ -546,7 +510,6 @@ - #define yymore() yymore_used_but_not_detected - #define YY_MORE_ADJ 0 - #define YY_RESTORE_YY_MORE_OFFSET --char *yytext; - #line 1 "qmake.ll" - #line 2 "qmake.ll" - /*************************************************************************** -@@ -569,9 +532,12 @@ - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - --#include <qmake_yacc.h> - #include <stdlib.h> - -+#define DONT_INCLUDE_FLEXLEXER -+ -+#include "qmake_lex.h" -+ - /** - @file qmake.ll - QMake Lexer -@@ -598,7 +564,7 @@ - - - --#line 602 "qmake_lex.cpp" -+#line 568 "qmake_lex.cpp" - - #define INITIAL 0 - #define list 1 -@@ -617,22 +583,6 @@ - #define YY_EXTRA_TYPE void * - #endif - --static int yy_init_globals (void ); -- --/* Macros after this point can all be overridden by user definitions in -- * section 1. -- */ -- --#ifndef YY_SKIP_YYWRAP --#ifdef __cplusplus --extern "C" int yywrap (void ); --#else --extern int yywrap (void ); --#endif --#endif -- -- static void yyunput (int c,char *buf_ptr ); -- - #ifndef yytext_ptr - static void yy_flex_strncpy (char *,yyconst char *,int ); - #endif -@@ -643,12 +593,6 @@ - - #ifndef YY_NO_INPUT - --#ifdef __cplusplus --static int yyinput (void ); --#else --static int input (void ); --#endif -- - #endif - - /* Amount of stuff to slurp up with each read. */ -@@ -658,10 +602,7 @@ - - /* Copy whatever the last rule matched to the standard output. */ - #ifndef ECHO --/* This used to be an fputs(), but since the string might contain NUL's, -- * we now use fwrite(). -- */ --#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) -+#define ECHO LexerOutput( yytext, yyleng ) - #endif - - /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, -@@ -669,34 +610,9 @@ - */ - #ifndef YY_INPUT - #define YY_INPUT(buf,result,max_size) \ -- if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ -- { \ -- int c = '*'; \ -- size_t n; \ -- for ( n = 0; n < max_size && \ -- (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ -- buf[n] = (char) c; \ -- if ( c == '\n' ) \ -- buf[n++] = (char) c; \ -- if ( c == EOF && ferror( yyin ) ) \ -- YY_FATAL_ERROR( "input in flex scanner failed" ); \ -- result = n; \ -- } \ -- else \ -- { \ -- errno=0; \ -- while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ -- { \ -- if( errno != EINTR) \ -- { \ -- YY_FATAL_ERROR( "input in flex scanner failed" ); \ -- break; \ -- } \ -- errno=0; \ -- clearerr(yyin); \ -- } \ -- }\ - \ -+ if ( (result = LexerInput( (char *) buf, max_size )) < 0 ) \ -+ YY_FATAL_ERROR( "input in flex scanner failed" ); - - #endif - -@@ -715,7 +631,7 @@ - - /* Report a fatal error. */ - #ifndef YY_FATAL_ERROR --#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -+#define YY_FATAL_ERROR(msg) LexerError( msg ) - #endif - - /* end tables serialization structures and prototypes */ -@@ -725,10 +641,7 @@ - */ - #ifndef YY_DECL - #define YY_DECL_IS_OURS 1 -- --extern int yylex (void); -- --#define YY_DECL int yylex (void) -+#define YY_DECL int yyFlexLexer::yylex() - #endif /* !YY_DECL */ - - /* Code executed at the beginning of each rule, after yytext and yyleng -@@ -757,9 +670,9 @@ - register char *yy_cp, *yy_bp; - register int yy_act; - --#line 72 "qmake.ll" -+#line 78 "qmake.ll" - --#line 763 "qmake_lex.cpp" -+#line 676 "qmake_lex.cpp" - - if ( !(yy_init) ) - { -@@ -773,18 +686,18 @@ - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) -- yyin = stdin; -+ yyin = & std::cin; - - if ( ! yyout ) -- yyout = stdout; -+ yyout = & std::cout; - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = -- yy_create_buffer(yyin,YY_BUF_SIZE ); -+ yy_create_buffer( yyin, YY_BUF_SIZE ); - } - -- yy_load_buffer_state( ); -+ yy_load_buffer_state( ); - } - - while ( 1 ) /* loops until end-of-file is reached */ -@@ -813,13 +726,13 @@ - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; -- if ( yy_current_state >= 79 ) -+ if ( yy_current_state >= 83 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } -- while ( yy_base[yy_current_state] != 285 ); -+ while ( yy_base[yy_current_state] != 202 ); - - yy_find_action: - yy_act = yy_accept[yy_current_state]; -@@ -832,6 +745,16 @@ - - YY_DO_BEFORE_ACTION; - -+ if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) -+ { -+ int yyl; -+ for ( yyl = 0; yyl < yyleng; ++yyl ) -+ if ( yytext[yyl] == '\n' ) -+ -+ yylineno++; -+; -+ } -+ - do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) -@@ -845,147 +768,205 @@ - - case 1: - YY_RULE_SETUP --#line 73 "qmake.ll" -+#line 79 "qmake.ll" - {} - YY_BREAK - case 2: - YY_RULE_SETUP --#line 74 "qmake.ll" --{ yylval.value = yytext; return LIST_WS; } -+#line 81 "qmake.ll" -+{ -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return Parser::token::token::LIST_WS; -+} - YY_BREAK - case 3: - YY_RULE_SETUP --#line 75 "qmake.ll" --{ -- yylval.value = yytext; -- unput(char(yylval.value.at(yylval.value.length()-1).latin1())); -- yylval.value = yylval.value.mid(0, yylval.value.length()-1); -- return INDENT; -+#line 86 "qmake.ll" -+{ -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ unput(char(mylval->value.at(mylval->value.length()-1).latin1())); -+ mylval->value = mylval->value.mid(0, mylval->value.length()-1); -+ return Parser::token::token::INDENT; - } - YY_BREAK - case 4: - /* rule 4 can match eol */ - YY_RULE_SETUP --#line 82 "qmake.ll" --{ BEGIN(list); return CONT; } -+#line 93 "qmake.ll" -+{ -+ BEGIN(list); -+ return Parser::token::token::CONT; -+} - YY_BREAK - case 5: - YY_RULE_SETUP --#line 83 "qmake.ll" --{ yylval.value = yytext; return (ID_SIMPLE); } -+#line 97 "qmake.ll" -+{ -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return (Parser::token::token::ID_SIMPLE); -+} - YY_BREAK - case 6: - YY_RULE_SETUP --#line 85 "qmake.ll" -+#line 102 "qmake.ll" - { -- yylval.value = yytext; -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); - BEGIN(list); -- return (LIST_COMMENT_WITHOUT_NEWLINE); -+ return (Parser::token::token::LIST_COMMENT_WITHOUT_NEWLINE); - } - YY_BREAK - case 7: - /* rule 7 can match eol */ - YY_RULE_SETUP --#line 91 "qmake.ll" -+#line 108 "qmake.ll" - { -- yylval.value = yytext; -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); - BEGIN(list); -- return (LIST_COMMENT); -+ return (Parser::token::token::LIST_COMMENT); - } - YY_BREAK - case 8: - YY_RULE_SETUP --#line 97 "qmake.ll" -+#line 114 "qmake.ll" - { -- yylval.value = yytext; -- yylval.value = yylval.value.mid(0, yylval.value.length()-1); -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ mylval->value = mylval->value.mid(0, mylval->value.length()-1); - unput(')'); - BEGIN(INITIAL); -- return (ID_ARGS); -+ return (Parser::token::token::ID_ARGS); - } - YY_BREAK - case 9: - YY_RULE_SETUP --#line 105 "qmake.ll" --{ BEGIN(list_with_comment); yylval.value = yytext; return VARIABLE_VALUE; } -+#line 122 "qmake.ll" -+{ -+ BEGIN(list_with_comment); -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return Parser::token::token::VARIABLE_VALUE; -+} - YY_BREAK - case 10: - YY_RULE_SETUP --#line 106 "qmake.ll" --{ BEGIN(list_with_comment); yylval.value = yytext; return QUOTED_VARIABLE_VALUE; } -+#line 128 "qmake.ll" -+{ -+ BEGIN(list_with_comment); -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return Parser::token::token::QUOTED_VARIABLE_VALUE; -+} - YY_BREAK - case 11: - YY_RULE_SETUP --#line 108 "qmake.ll" --{ BEGIN(list); yylval.value = yytext; return EQ; } -+#line 134 "qmake.ll" -+{ -+BEGIN(list); -+mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+return Parser::token::token::EQ; -+} - YY_BREAK - case 12: - YY_RULE_SETUP --#line 109 "qmake.ll" --{ BEGIN(list); yylval.value = yytext; return PLUSEQ; } -+#line 140 "qmake.ll" -+{ -+ BEGIN(list); -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return Parser::token::token::PLUSEQ; -+} - YY_BREAK - case 13: - YY_RULE_SETUP --#line 110 "qmake.ll" --{ BEGIN(list); yylval.value = yytext; return MINUSQE; } -+#line 146 "qmake.ll" -+{ -+ BEGIN(list); -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return Parser::token::token::MINUSEQ; -+} - YY_BREAK - case 14: - YY_RULE_SETUP --#line 111 "qmake.ll" --{ BEGIN(list); yylval.value = yytext; return STAREQ; } -+#line 152 "qmake.ll" -+{ -+ BEGIN(list); -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return Parser::token::token::STAREQ; -+} - YY_BREAK - case 15: - YY_RULE_SETUP --#line 112 "qmake.ll" --{ BEGIN(list); yylval.value = yytext; return TILDEEQ; } -+#line 158 "qmake.ll" -+{ -+ BEGIN(list); -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return Parser::token::token::TILDEEQ; -+} - YY_BREAK - case 16: - YY_RULE_SETUP --#line 113 "qmake.ll" --{ return LCURLY; } -+#line 164 "qmake.ll" -+{ -+ return Parser::token::token::LCURLY; -+} - YY_BREAK - case 17: - YY_RULE_SETUP --#line 114 "qmake.ll" --{ return LCURLY; } -+#line 168 "qmake.ll" -+{ -+ return Parser::token::token::LCURLY; -+} - YY_BREAK - case 18: - YY_RULE_SETUP --#line 115 "qmake.ll" --{ return RCURLY; } -+#line 172 "qmake.ll" -+{ -+ return Parser::token::token::RCURLY; -+} - YY_BREAK - case 19: - YY_RULE_SETUP --#line 116 "qmake.ll" --{ BEGIN(funcargs); return LBRACE; } -+#line 176 "qmake.ll" -+{ -+ BEGIN(funcargs); -+ return Parser::token::token::LBRACE; -+} - YY_BREAK - case 20: - YY_RULE_SETUP --#line 117 "qmake.ll" --{ BEGIN(INITIAL); return RBRACE; } -+#line 181 "qmake.ll" -+{ -+ BEGIN(INITIAL); -+ return Parser::token::token::RBRACE; -+} - YY_BREAK - case 21: - YY_RULE_SETUP --#line 118 "qmake.ll" --{ yylval.value = yytext; return COLON; } -+#line 186 "qmake.ll" -+{ -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return Parser::token::token::COLON; -+} - YY_BREAK - case 22: - /* rule 22 can match eol */ - YY_RULE_SETUP --#line 119 "qmake.ll" --{ BEGIN(INITIAL); return NEWLINE; } -+#line 191 "qmake.ll" -+{ -+ BEGIN(INITIAL); -+ return Parser::token::token::NEWLINE; -+} - YY_BREAK - case 23: - YY_RULE_SETUP --#line 121 "qmake.ll" --{ yylval.value = yytext; return (COMMENT); } -+#line 196 "qmake.ll" -+{ -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return (Parser::token::token::COMMENT); -+} - YY_BREAK - case 24: - YY_RULE_SETUP --#line 123 "qmake.ll" -+#line 201 "qmake.ll" - ECHO; - YY_BREAK --#line 989 "qmake_lex.cpp" -+#line 970 "qmake_lex.cpp" - case YY_STATE_EOF(INITIAL): - case YY_STATE_EOF(list): - case YY_STATE_EOF(list_with_comment): -@@ -1066,7 +1047,7 @@ - { - (yy_did_buffer_switch_on_eof) = 0; - -- if ( yywrap( ) ) -+ if ( yywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up -@@ -1121,6 +1102,81 @@ - } /* end of scanning one token */ - } /* end of yylex */ - -+yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout ) -+{ -+ yyin = arg_yyin; -+ yyout = arg_yyout; -+ yy_c_buf_p = 0; -+ yy_init = 0; -+ yy_start = 0; -+ yy_flex_debug = 0; -+ yylineno = 1; // this will only get updated if %option yylineno -+ -+ yy_did_buffer_switch_on_eof = 0; -+ -+ yy_looking_for_trail_begin = 0; -+ yy_more_flag = 0; -+ yy_more_len = 0; -+ yy_more_offset = yy_prev_more_offset = 0; -+ -+ yy_start_stack_ptr = yy_start_stack_depth = 0; -+ yy_start_stack = NULL; -+ -+ (yy_buffer_stack) = 0; -+ (yy_buffer_stack_top) = 0; -+ (yy_buffer_stack_max) = 0; -+ -+ yy_state_buf = 0; -+ -+} -+ -+void yyFlexLexer::switch_streams( std::istream* new_in, std::ostream* new_out ) -+{ -+ if ( new_in ) -+ { -+ yy_delete_buffer( YY_CURRENT_BUFFER ); -+ yy_switch_to_buffer( yy_create_buffer( new_in, YY_BUF_SIZE ) ); -+ } -+ -+ if ( new_out ) -+ yyout = new_out; -+} -+ -+#ifdef YY_INTERACTIVE -+int yyFlexLexer::LexerInput( char* buf, int /* max_size */ ) -+#else -+int yyFlexLexer::LexerInput( char* buf, int max_size ) -+#endif -+{ -+ if ( yyin->eof() || yyin->fail() ) -+ return 0; -+ -+#ifdef YY_INTERACTIVE -+ yyin->get( buf[0] ); -+ -+ if ( yyin->eof() ) -+ return 0; -+ -+ if ( yyin->bad() ) -+ return -1; -+ -+ return 1; -+ -+#else -+ (void) yyin->read( buf, max_size ); -+ -+ if ( yyin->bad() ) -+ return -1; -+ else -+ return yyin->gcount(); -+#endif -+} -+ -+void yyFlexLexer::LexerOutput( const char* buf, int size ) -+{ -+ (void) yyout->write( buf, size ); -+} -+ - /* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: -@@ -1128,7 +1184,7 @@ - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ --static int yy_get_next_buffer (void) -+int yyFlexLexer::yy_get_next_buffer() - { - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); -@@ -1229,7 +1285,7 @@ - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; -- yyrestart(yyin ); -+ yyrestart( yyin ); - } - - else -@@ -1254,7 +1310,7 @@ - - /* yy_get_previous_state - get the state just before the EOB char was reached */ - -- static yy_state_type yy_get_previous_state (void) -+ yy_state_type yyFlexLexer::yy_get_previous_state() - { - register yy_state_type yy_current_state; - register char *yy_cp; -@@ -1273,7 +1329,7 @@ - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; -- if ( yy_current_state >= 79 ) -+ if ( yy_current_state >= 83 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; -@@ -1287,7 +1343,7 @@ - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ -- static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -+ yy_state_type yyFlexLexer::yy_try_NUL_trans( yy_state_type yy_current_state ) - { - register int yy_is_jam; - register char *yy_cp = (yy_c_buf_p); -@@ -1301,16 +1357,16 @@ - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; -- if ( yy_current_state >= 79 ) -+ if ( yy_current_state >= 83 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; -- yy_is_jam = (yy_current_state == 78); -+ yy_is_jam = (yy_current_state == 82); - - return yy_is_jam ? 0 : yy_current_state; - } - -- static void yyunput (int c, register char * yy_bp ) -+ void yyFlexLexer::yyunput( int c, register char* yy_bp) - { - register char *yy_cp; - -@@ -1342,18 +1398,16 @@ - - *--yy_cp = (char) c; - -+ if ( c == '\n' ){ -+ --yylineno; -+ } -+ - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; - } - --#ifndef YY_NO_INPUT --#ifdef __cplusplus -- static int yyinput (void) --#else -- static int input (void) --#endif -- -+ int yyFlexLexer::yyinput() - { - int c; - -@@ -1388,13 +1442,13 @@ - */ - - /* Reset buffer status. */ -- yyrestart(yyin ); -+ yyrestart( yyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { -- if ( yywrap( ) ) -+ if ( yywrap( ) ) - return EOF; - - if ( ! (yy_did_buffer_switch_on_eof) ) -@@ -1418,34 +1472,37 @@ - (yy_hold_char) = *++(yy_c_buf_p); - - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n'); -+ if ( YY_CURRENT_BUFFER_LVALUE->yy_at_bol ) -+ -+ yylineno++; -+; - - return c; - } --#endif /* ifndef YY_NO_INPUT */ - - /** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ -- void yyrestart (FILE * input_file ) -+ void yyFlexLexer::yyrestart( std::istream* input_file ) - { - - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = -- yy_create_buffer(yyin,YY_BUF_SIZE ); -+ yy_create_buffer( yyin, YY_BUF_SIZE ); - } - -- yy_init_buffer(YY_CURRENT_BUFFER,input_file ); -- yy_load_buffer_state( ); -+ yy_init_buffer( YY_CURRENT_BUFFER, input_file ); -+ yy_load_buffer_state( ); - } - - /** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ -- void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -+ void yyFlexLexer::yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) - { - - /* TODO. We should be able to replace this entire function body -@@ -1466,7 +1523,7 @@ - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; -- yy_load_buffer_state( ); -+ yy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag -@@ -1476,7 +1533,7 @@ - (yy_did_buffer_switch_on_eof) = 1; - } - --static void yy_load_buffer_state (void) -+ void yyFlexLexer::yy_load_buffer_state() - { - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; -@@ -1490,7 +1547,7 @@ - * - * @return the allocated buffer state. - */ -- YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) -+ YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream* file, int size ) - { - YY_BUFFER_STATE b; - -@@ -1509,7 +1566,7 @@ - - b->yy_is_our_buffer = 1; - -- yy_init_buffer(b,file ); -+ yy_init_buffer( b, file ); - - return b; - } -@@ -1518,7 +1575,7 @@ - * @param b a buffer created with yy_create_buffer() - * - */ -- void yy_delete_buffer (YY_BUFFER_STATE b ) -+ void yyFlexLexer::yy_delete_buffer( YY_BUFFER_STATE b ) - { - - if ( ! b ) -@@ -1533,20 +1590,18 @@ - yyfree((void *) b ); - } - --#ifndef __cplusplus --extern int isatty (int ); --#endif /* __cplusplus */ -- -+extern "C" int isatty (int ); -+ - /* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. - */ -- static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) -+ void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, std::istream* file ) - - { - int oerrno = errno; - -- yy_flush_buffer(b ); -+ yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; -@@ -1560,8 +1615,7 @@ - b->yy_bs_column = 0; - } - -- b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -- -+ b->yy_is_interactive = 0; - errno = oerrno; - } - -@@ -1569,7 +1623,7 @@ - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ -- void yy_flush_buffer (YY_BUFFER_STATE b ) -+ void yyFlexLexer::yy_flush_buffer( YY_BUFFER_STATE b ) - { - if ( ! b ) - return; -@@ -1589,7 +1643,7 @@ - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) -- yy_load_buffer_state( ); -+ yy_load_buffer_state( ); - } - - /** Pushes the new state onto the stack. The new state becomes -@@ -1598,7 +1652,7 @@ - * @param new_buffer The new state. - * - */ --void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) -+void yyFlexLexer::yypush_buffer_state (YY_BUFFER_STATE new_buffer) - { - if (new_buffer == NULL) - return; -@@ -1620,7 +1674,7 @@ - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ -- yy_load_buffer_state( ); -+ yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } - -@@ -1628,7 +1682,7 @@ - * The next element becomes the new top. - * - */ --void yypop_buffer_state (void) -+void yyFlexLexer::yypop_buffer_state (void) - { - if (!YY_CURRENT_BUFFER) - return; -@@ -1639,7 +1693,7 @@ - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { -- yy_load_buffer_state( ); -+ yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } - } -@@ -1647,7 +1701,7 @@ - /* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ --static void yyensure_buffer_stack (void) -+void yyFlexLexer::yyensure_buffer_stack(void) - { - int num_to_alloc; - -@@ -1686,99 +1740,51 @@ - } - } - --/** Setup the input buffer state to scan directly from a user-specified character buffer. -- * @param base the character buffer -- * @param size the size in bytes of the character buffer -- * -- * @return the newly allocated buffer state object. -- */ --YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) -+ void yyFlexLexer::yy_push_state( int new_state ) - { -- YY_BUFFER_STATE b; -- -- if ( size < 2 || -- base[size-2] != YY_END_OF_BUFFER_CHAR || -- base[size-1] != YY_END_OF_BUFFER_CHAR ) -- /* They forgot to leave room for the EOB's. */ -- return 0; -+ if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) ) -+ { -+ yy_size_t new_size; - -- b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); -- if ( ! b ) -- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); -+ (yy_start_stack_depth) += YY_START_STACK_INCR; -+ new_size = (yy_start_stack_depth) * sizeof( int ); - -- b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ -- b->yy_buf_pos = b->yy_ch_buf = base; -- b->yy_is_our_buffer = 0; -- b->yy_input_file = 0; -- b->yy_n_chars = b->yy_buf_size; -- b->yy_is_interactive = 0; -- b->yy_at_bol = 1; -- b->yy_fill_buffer = 0; -- b->yy_buffer_status = YY_BUFFER_NEW; -+ if ( ! (yy_start_stack) ) -+ (yy_start_stack) = (int *) yyalloc(new_size ); - -- yy_switch_to_buffer(b ); -+ else -+ (yy_start_stack) = (int *) yyrealloc((void *) (yy_start_stack),new_size ); - -- return b; --} -+ if ( ! (yy_start_stack) ) -+ YY_FATAL_ERROR( -+ "out of memory expanding start-condition stack" ); -+ } - --/** Setup the input buffer state to scan a string. The next call to yylex() will -- * scan from a @e copy of @a str. -- * @param yystr a NUL-terminated string to scan -- * -- * @return the newly allocated buffer state object. -- * @note If you want to scan bytes that may contain NUL values, then use -- * yy_scan_bytes() instead. -- */ --YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) --{ -- -- return yy_scan_bytes(yystr,strlen(yystr) ); -+ (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START; -+ -+ BEGIN(new_state); - } - --/** Setup the input buffer state to scan the given bytes. The next call to yylex() will -- * scan from a @e copy of @a bytes. -- * @param bytes the byte buffer to scan -- * @param len the number of bytes in the buffer pointed to by @a bytes. -- * -- * @return the newly allocated buffer state object. -- */ --YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) -+ void yyFlexLexer::yy_pop_state() - { -- YY_BUFFER_STATE b; -- char *buf; -- yy_size_t n; -- int i; -- -- /* Get memory for full buffer, including space for trailing EOB's. */ -- n = _yybytes_len + 2; -- buf = (char *) yyalloc(n ); -- if ( ! buf ) -- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); -- -- for ( i = 0; i < _yybytes_len; ++i ) -- buf[i] = yybytes[i]; -+ if ( --(yy_start_stack_ptr) < 0 ) -+ YY_FATAL_ERROR( "start-condition stack underflow" ); - -- buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; -- -- b = yy_scan_buffer(buf,n ); -- if ( ! b ) -- YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); -- -- /* It's okay to grow etc. this buffer, and we should throw it -- * away when we're done. -- */ -- b->yy_is_our_buffer = 1; -+ BEGIN((yy_start_stack)[(yy_start_stack_ptr)]); -+} - -- return b; -+ int yyFlexLexer::yy_top_state() -+{ -+ return (yy_start_stack)[(yy_start_stack_ptr) - 1]; - } - - #ifndef YY_EXIT_FAILURE - #define YY_EXIT_FAILURE 2 - #endif - --static void yy_fatal_error (yyconst char* msg ) -+void yyFlexLexer::LexerError( yyconst char msg[] ) - { -- (void) fprintf( stderr, "%s\n", msg ); -+ std::cerr << msg << std::endl; - exit( YY_EXIT_FAILURE ); - } - -@@ -1801,119 +1807,12 @@ - - /* Accessor methods (get/set functions) to struct members. */ - --/** Get the current line number. -- * -- */ --int yyget_lineno (void) --{ -- -- return yylineno; --} -- --/** Get the input stream. -- * -- */ --FILE *yyget_in (void) --{ -- return yyin; --} -- --/** Get the output stream. -- * -- */ --FILE *yyget_out (void) --{ -- return yyout; --} -- --/** Get the length of the current token. -- * -- */ --int yyget_leng (void) --{ -- return yyleng; --} -- --/** Get the current token. -- * -- */ -- --char *yyget_text (void) --{ -- return yytext; --} -- --/** Set the current line number. -- * @param line_number -- * -- */ --void yyset_lineno (int line_number ) --{ -- -- yylineno = line_number; --} -- --/** Set the input stream. This does not discard the current -- * input buffer. -- * @param in_str A readable stream. -- * -- * @see yy_switch_to_buffer -- */ --void yyset_in (FILE * in_str ) --{ -- yyin = in_str ; --} -- --void yyset_out (FILE * out_str ) --{ -- yyout = out_str ; --} -- --int yyget_debug (void) --{ -- return yy_flex_debug; --} -- --void yyset_debug (int bdebug ) --{ -- yy_flex_debug = bdebug ; --} -- --static int yy_init_globals (void) --{ -- /* Initialization is the same as for the non-reentrant scanner. -- * This function is called from yylex_destroy(), so don't allocate here. -- */ -- -- (yy_buffer_stack) = 0; -- (yy_buffer_stack_top) = 0; -- (yy_buffer_stack_max) = 0; -- (yy_c_buf_p) = (char *) 0; -- (yy_init) = 0; -- (yy_start) = 0; -- --/* Defined in main.c */ --#ifdef YY_STDINIT -- yyin = stdin; -- yyout = stdout; --#else -- yyin = (FILE *) 0; -- yyout = (FILE *) 0; --#endif -- -- /* For future reference: Set errno on error, since we are called by -- * yylex_init() -- */ -- return 0; --} -- --/* yylex_destroy is for both reentrant and non-reentrant scanners. */ --int yylex_destroy (void) -+yyFlexLexer::~yyFlexLexer() - { - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ -- yy_delete_buffer(YY_CURRENT_BUFFER ); -+ yy_delete_buffer( YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); - } -@@ -1922,11 +1821,9 @@ - yyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - -- /* Reset the globals. This is important in a non-reentrant scanner so the next time -- * yylex() is called, initialization will occur. */ -- yy_init_globals( ); -+ delete [] (yy_state_buf); -+ yyfree((yy_start_stack) ); - -- return 0; - } - - /* -@@ -1977,7 +1874,26 @@ - - #define YYTABLES_NAME "yytables" - --#line 123 "qmake.ll" -+#line 201 "qmake.ll" - - -+namespace QMake -+{ -+ Lexer::Lexer( std::istream* argin, std::ostream* argout ) -+ : yyFlexLexer(argin, argout), mylval(0) -+ { -+ } -+ -+ int Lexer::yylex( QMake::Parser::semantic_type* yylval ) -+ { -+ mylval = yylval; -+ return yylex(); -+ } -+} -+ -+int QMakelex( QMake::Parser::semantic_type* yylval, QMake::Lexer* lexer) -+{ -+ return lexer->yylex( yylval ); -+} -+ - -diff -u --exclude=.svn -Nur kdev_3.4.0.org/buildtools/lib/parsers/qmake/qmake_lex.h kdev_3.4.0/buildtools/lib/parsers/qmake/qmake_lex.h ---- buildtools/lib/parsers/qmake/qmake_lex.h 1970-01-01 01:00:00.000000000 +0100 -+++ buildtools/lib/parsers/qmake/qmake_lex.h 2007-02-07 20:35:12.000000000 +0100 -@@ -0,0 +1,45 @@ -+/* KDevelop QMake Support -+ * -+ * Copyright 2007 Andreas Pakulat <apaku@gmx.de> -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * as published by the Free Software Foundation; either version 2 -+ * of the License, or (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -+ * 02110-1301, USA. -+ */ -+#ifndef QMAKE_LEX_H -+#define QMAKE_LEX_H -+ -+#include "qmake_yacc.hpp" -+#include <iostream> -+ -+#ifndef DONT_INCLUDE_FLEXLEXER -+#include "FlexLexer.h" -+#endif -+ -+namespace QMake -+{ -+ class Lexer : public yyFlexLexer -+ { -+ public: -+ Lexer( std::istream* argin = 0, std::ostream* argout = 0 ); -+ int yylex( QMake::Parser::semantic_type* yylval ); -+ int yylex(); -+ private: -+ QMake::Parser::semantic_type* mylval; -+ }; -+} -+ -+#endif -+ -+// kate: space-indent on; indent-width 4; tab-width: 4; replace-tabs on; auto-insert-doxygen on -diff -u --exclude=.svn -Nur kdev_3.4.0.org/buildtools/lib/parsers/qmake/qmake.ll kdev_3.4.0/buildtools/lib/parsers/qmake/qmake.ll ---- buildtools/lib/parsers/qmake/qmake.ll 2007-02-07 21:15:37.000000000 +0100 -+++ buildtools/lib/parsers/qmake/qmake.ll 2007-02-07 20:35:16.000000000 +0100 -@@ -19,9 +19,12 @@ - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - --#include <qmake_yacc.h> - #include <stdlib.h> - -+#define DONT_INCLUDE_FLEXLEXER -+ -+#include "qmake_lex.h" -+ - /** - @file qmake.ll - QMake Lexer -@@ -48,6 +51,9 @@ - %} - - %option noyywrap -+%option yylineno -+%option c++ -+%option yyclass="QMake::Lexer" - - %x list - %x list_with_comment -@@ -55,69 +61,160 @@ - - delim [ \t] - ws {delim}+ --begin_ws ^{delim}+[^\n\t ] -+begin_ws ^{delim}+[^\r\n\t ] - quote "\"" --var_value [^\n\t ]*[^\n\t \\] -+var_value [^\r\n\t ]*[^\r\n\t \\] - quoted_var_value {quote}({var_value}|[\t ])({var_value}|[\t ])*{quote} - letter [A-Za-z] - digit [0-9] - id_simple ({digit}|{letter}|\!|-|_|\*|\$)({letter}|{digit}|\||\!|-|_|\*|\$|\.|\+|\-)* --id_args [^\n]*\) -+id_args [^\r\n]*\) - number {digit}+ - comment #.* --comment_cont {ws}*#.*\n -+comment_cont {ws}*#.*(\n|\r|\r\n) - comment_cont_nn {ws}*#.* --cont \\{ws}*\n -+cont \\{ws}*(\n|\r|\r\n) - - %% --<INITIAL>{ws} {} --<list,list_with_comment>{ws} { yylval.value = yytext; return LIST_WS; } --<list,list_with_comment>{begin_ws} { -- yylval.value = yytext; -- unput(char(yylval.value.at(yylval.value.length()-1).latin1())); -- yylval.value = yylval.value.mid(0, yylval.value.length()-1); -- return INDENT; -+<INITIAL>{ws} {} -+ -+<list,list_with_comment>{ws} { -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return Parser::token::token::LIST_WS; - } - --<list,list_with_comment,INITIAL>{cont} { BEGIN(list); return CONT; } --{id_simple} { yylval.value = yytext; return (ID_SIMPLE); } -+<list,list_with_comment>{begin_ws} { -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ unput(char(mylval->value.at(mylval->value.length()-1).latin1())); -+ mylval->value = mylval->value.mid(0, mylval->value.length()-1); -+ return Parser::token::token::INDENT; -+} -+ -+<list,list_with_comment,INITIAL>{cont} { -+ BEGIN(list); -+ return Parser::token::token::CONT; -+} -+{id_simple} { -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return (Parser::token::token::ID_SIMPLE); -+} - - <list_with_comment>{comment_cont_nn} { -- yylval.value = yytext; -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); - BEGIN(list); -- return (LIST_COMMENT_WITHOUT_NEWLINE); -+ return (Parser::token::token::LIST_COMMENT_WITHOUT_NEWLINE); - } - - <list>{comment_cont} { -- yylval.value = yytext; -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); - BEGIN(list); -- return (LIST_COMMENT); -+ return (Parser::token::token::LIST_COMMENT); - } - - <funcargs>{id_args} { -- yylval.value = yytext; -- yylval.value = yylval.value.mid(0, yylval.value.length()-1); -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ mylval->value = mylval->value.mid(0, mylval->value.length()-1); - unput(')'); - BEGIN(INITIAL); -- return (ID_ARGS); -+ return (Parser::token::token::ID_ARGS); - } - --<list,list_with_comment>{var_value} { BEGIN(list_with_comment); yylval.value = yytext; return VARIABLE_VALUE; } --<list,list_with_comment>{quoted_var_value} { BEGIN(list_with_comment); yylval.value = yytext; return QUOTED_VARIABLE_VALUE; } -+<list,list_with_comment>{var_value} { -+ BEGIN(list_with_comment); -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return Parser::token::token::VARIABLE_VALUE; -+} -+ -+<list,list_with_comment>{quoted_var_value} { -+ BEGIN(list_with_comment); -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return Parser::token::token::QUOTED_VARIABLE_VALUE; -+} -+ -+"=" { -+BEGIN(list); -+mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+return Parser::token::token::EQ; -+} -+ -+"+=" { -+ BEGIN(list); -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return Parser::token::token::PLUSEQ; -+} -+ -+"-=" { -+ BEGIN(list); -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return Parser::token::token::MINUSEQ; -+} -+ -+"*=" { -+ BEGIN(list); -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return Parser::token::token::STAREQ; -+} -+ -+"~=" { -+ BEGIN(list); -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return Parser::token::token::TILDEEQ; -+} -+ -+"{" { -+ return Parser::token::token::LCURLY; -+} -+ -+":"{delim}*"{" { -+ return Parser::token::token::LCURLY; -+} -+ -+"}" { -+ return Parser::token::token::RCURLY; -+} -+ -+"(" { -+ BEGIN(funcargs); -+ return Parser::token::token::LBRACE; -+} -+ -+<funcargs,INITIAL>")" { -+ BEGIN(INITIAL); -+ return Parser::token::token::RBRACE; -+} -+ -+":" { -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return Parser::token::token::COLON; -+} - --"=" { BEGIN(list); yylval.value = yytext; return EQ; } --"+=" { BEGIN(list); yylval.value = yytext; return PLUSEQ; } --"-=" { BEGIN(list); yylval.value = yytext; return MINUSQE; } --"*=" { BEGIN(list); yylval.value = yytext; return STAREQ; } --"~=" { BEGIN(list); yylval.value = yytext; return TILDEEQ; } --"{" { return LCURLY; } --":"{delim}*"{" { return LCURLY; } --"}" { return RCURLY; } --"(" { BEGIN(funcargs); return LBRACE; } --<funcargs,INITIAL>")" { BEGIN(INITIAL); return RBRACE; } --":" { yylval.value = yytext; return COLON; } --<list,list_with_comment,INITIAL>"\n" { BEGIN(INITIAL); return NEWLINE; } -+<list,list_with_comment,INITIAL>"\n" { -+ BEGIN(INITIAL); -+ return Parser::token::token::NEWLINE; -+} - --{comment} { yylval.value = yytext; return (COMMENT); } -+{comment} { -+ mylval->value = QString::fromLocal8Bit( YYText(), YYLeng() ); -+ return (Parser::token::token::COMMENT); -+} - - %% -+namespace QMake -+{ -+ Lexer::Lexer( std::istream* argin, std::ostream* argout ) -+ : yyFlexLexer(argin, argout), mylval(0) -+ { -+ } -+ -+ int Lexer::yylex( QMake::Parser::semantic_type* yylval ) -+ { -+ mylval = yylval; -+ return yylex(); -+ } -+} -+ -+int QMakelex( QMake::Parser::semantic_type* yylval, QMake::Lexer* lexer) -+{ -+ return lexer->yylex( yylval ); -+} -+ -diff -u --exclude=.svn -Nur kdev_3.4.0.org/buildtools/lib/parsers/qmake/qmake_yacc.cpp kdev_3.4.0/buildtools/lib/parsers/qmake/qmake_yacc.cpp ---- buildtools/lib/parsers/qmake/qmake_yacc.cpp 2007-02-07 21:15:37.000000000 +0100 -+++ buildtools/lib/parsers/qmake/qmake_yacc.cpp 2007-02-07 20:35:19.000000000 +0100 -@@ -1,9 +1,8 @@ - /* A Bison parser, made by GNU Bison 2.3. */ - --/* Skeleton implementation for Bison's Yacc-like parsers in C -+/* Skeleton implementation for Bison LALR(1) parsers in C++ - -- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 -- Free Software Foundation, Inc. -+ Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by -@@ -33,1476 +32,363 @@ - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - --/* C LALR(1) parser skeleton written by Richard Stallman, by -- simplifying the original so-called "semantic" parser. */ -+// Take the name prefix into account. -+#define yylex QMakelex - --/* All symbols defined below should begin with yy or YY, to avoid -- infringing on user name space. This should be done even for local -- variables, as they might otherwise be expanded by user macros. -- There are some unavoidable exceptions within include files to -- define necessary library symbols; they are noted "INFRINGES ON -- USER NAME SPACE" below. */ -- --/* Identify Bison output. */ --#define YYBISON 1 -- --/* Bison version. */ --#define YYBISON_VERSION "2.3" -- --/* Skeleton name. */ --#define YYSKELETON_NAME "yacc.c" -- --/* Pure parsers. */ --#define YYPURE 0 -- --/* Using locations. */ --#define YYLSP_NEEDED 0 -+#include "qmake_yacc.hpp" - -+/* User implementation prologue. */ - - --/* Tokens. */ --#ifndef YYTOKENTYPE --# define YYTOKENTYPE -- /* Put the tokens into the symbol table, so that GDB and other debuggers -- know about them. */ -- enum yytokentype { -- ID_SIMPLE = 258, -- EQ = 259, -- PLUSEQ = 260, -- MINUSQE = 261, -- STAREQ = 262, -- TILDEEQ = 263, -- LBRACE = 264, -- RBRACE = 265, -- COLON = 266, -- NUMSIGN = 267, -- NEWLINE = 268, -- NUMBER = 269, -- COMMENT = 270, -- CONT = 271, -- RCURLY = 272, -- LCURLY = 273, -- ID_ARGS = 274, -- LIST_COMMENT = 275, -- LIST_COMMENT_WITHOUT_NEWLINE = 276, -- QUOTED_VARIABLE_VALUE = 277, -- VARIABLE_VALUE = 278, -- INDENT = 279, -- LIST_WS = 280 -- }; --#endif --/* Tokens. */ --#define ID_SIMPLE 258 --#define EQ 259 --#define PLUSEQ 260 --#define MINUSQE 261 --#define STAREQ 262 --#define TILDEEQ 263 --#define LBRACE 264 --#define RBRACE 265 --#define COLON 266 --#define NUMSIGN 267 --#define NEWLINE 268 --#define NUMBER 269 --#define COMMENT 270 --#define CONT 271 --#define RCURLY 272 --#define LCURLY 273 --#define ID_ARGS 274 --#define LIST_COMMENT 275 --#define LIST_COMMENT_WITHOUT_NEWLINE 276 --#define QUOTED_VARIABLE_VALUE 277 --#define VARIABLE_VALUE 278 --#define INDENT 279 --#define LIST_WS 280 -- -- -- -- --/* Copy the first part of user declarations. */ --#line 1 "qmake.yy" -- --/*************************************************************************** -- * Copyright (C) 2005 by Alexander Dymo * -- * adymo@kdevelop.org * -- * * -- * This program is free software; you can redistribute it and/or modify * -- * it under the terms of the GNU Library General Public License as * -- * published by the Free Software Foundation; either version 2 of the * -- * License, or (at your option) any later version. * -- * * -- * This program is distributed in the hope that it will be useful, * -- * but WITHOUT ANY WARRANTY; without even the implied warranty of * -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -- * GNU General Public License for more details. * -- * * -- * You should have received a copy of the GNU Library General Public * -- * License along with this program; if not, write to the * -- * Free Software Foundation, Inc., * -- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * -- ***************************************************************************/ -- --/** --@file qmake.yy --QMake Parser -- --Simple LALR parser which builds the syntax tree (see @ref QMake::AST). -- --@todo Recognize comments after statements like: --SOURCES = foo #regognize me -- --@fixme Parser fails on files that do not end with a newline --@fixme 1 shift/reduce conflict in "line_body" rule --*/ -- --#include <qvaluestack.h> --#include "qmakeast.h" --#include <qregexp.h> -- --#define YYSTYPE_IS_DECLARED -- --using namespace QMake; -- --/** --The yylval type. --*/ --struct Result { -- Result(): node(0) {} -- -- /**Type of semantic value for simple grammar rules.*/ -- QString value; -- /**Type of semantic value for grammar rules which are parts of AST.*/ -- AST *node; -- /**Type of semantic value for "multiline_values" grammar rule. -- Each line of multiline value is stored as a string in the list. -- -- For example we have in .pro file: -- @code -- SOURCE = foo1.cpp \ -- foo2.cpp \ -- foo3.cpp foo4.cpp -- @endcode -- The string list will be populated with three strings: -- <pre> -- foo1.cpp -- foo2.cpp -- foo3.cpp foo4.cpp -- </pre> -- */ -- QStringList values; -- QString indent; --}; -- --typedef Result YYSTYPE; -- --void yyerror(const char *str) { -- printf("%s\n", str); --} -- --int yylex(); -- --/** --The stack to store ProjectAST pointers when a new child --ProjectAST is created and filled with statements. -- --Parser creates root ProjectAST for a .pro file, pushes it onto the stack and starts --adding statements. Each statement is added as a child StatementAST to the ProjectAST --currently on the top in the stack. -- --When a scope or function scope statement is parsed, the child ProjectAST is created --and pushed onto the stack. Therefore all statements which belong to the scope --or function scope are added as childs to their direct parent (scope or function scope). --*/ --QValueStack<ProjectAST*> projects; -- --/** --The current depth of AST node is stored here. --AST depth is important to know because automatic indentation can --be easily implemented (the parser itself looses all information --about indentation). --*/ --int depth = 0; -- --/* --To debug this parser, put the line below into the next bison file section. --Don't forget to uncomment "yydebug = 1" line in qmakedriver.cpp. --%debug --*/ -- -- --/* Enabling traces. */ --#ifndef YYDEBUG --# define YYDEBUG 0 --#endif -- --/* Enabling verbose error messages. */ --#ifdef YYERROR_VERBOSE --# undef YYERROR_VERBOSE --# define YYERROR_VERBOSE 1 --#else --# define YYERROR_VERBOSE 0 --#endif -- --/* Enabling the token table. */ --#ifndef YYTOKEN_TABLE --# define YYTOKEN_TABLE 0 --#endif -- --#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED --typedef int YYSTYPE; --# define yystype YYSTYPE /* obsolescent; will be withdrawn */ --# define YYSTYPE_IS_DECLARED 1 --# define YYSTYPE_IS_TRIVIAL 1 --#endif -- -- -- --/* Copy the second part of user declarations. */ -- -- --/* Line 216 of yacc.c. */ --#line 265 "qmake_yacc.cpp" -- --#ifdef short --# undef short --#endif -- --#ifdef YYTYPE_UINT8 --typedef YYTYPE_UINT8 yytype_uint8; --#else --typedef unsigned char yytype_uint8; --#endif -- --#ifdef YYTYPE_INT8 --typedef YYTYPE_INT8 yytype_int8; --#elif (defined __STDC__ || defined __C99__FUNC__ \ -- || defined __cplusplus || defined _MSC_VER) --typedef signed char yytype_int8; --#else --typedef short int yytype_int8; --#endif -- --#ifdef YYTYPE_UINT16 --typedef YYTYPE_UINT16 yytype_uint16; --#else --typedef unsigned short int yytype_uint16; --#endif -- --#ifdef YYTYPE_INT16 --typedef YYTYPE_INT16 yytype_int16; --#else --typedef short int yytype_int16; --#endif -- --#ifndef YYSIZE_T --# ifdef __SIZE_TYPE__ --# define YYSIZE_T __SIZE_TYPE__ --# elif defined size_t --# define YYSIZE_T size_t --# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ -- || defined __cplusplus || defined _MSC_VER) --# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ --# define YYSIZE_T size_t --# else --# define YYSIZE_T unsigned int --# endif --#endif -- --#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) -+/* Line 317 of lalr1.cc. */ -+#line 45 "qmake_yacc.cpp" - - #ifndef YY_ - # if YYENABLE_NLS - # if ENABLE_NLS --# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ -+# include <libintl.h> /* FIXME: INFRINGES ON USER NAME SPACE */ - # define YY_(msgid) dgettext ("bison-runtime", msgid) - # endif - # endif - # ifndef YY_ - # define YY_(msgid) msgid - # endif --#endif -- --/* Suppress unused-variable warnings by "using" E. */ --#if ! defined lint || defined __GNUC__ --# define YYUSE(e) ((void) (e)) --#else --# define YYUSE(e) /* empty */ --#endif -- --/* Identity function, used to suppress warnings about constant conditions. */ --#ifndef lint --# define YYID(n) (n) --#else --#if (defined __STDC__ || defined __C99__FUNC__ \ -- || defined __cplusplus || defined _MSC_VER) --static int --YYID (int i) --#else --static int --YYID (i) -- int i; --#endif --{ -- return i; --} --#endif -- --#if ! defined yyoverflow || YYERROR_VERBOSE -- --/* The parser invokes alloca or malloc; define the necessary symbols. */ -- --# ifdef YYSTACK_USE_ALLOCA --# if YYSTACK_USE_ALLOCA --# ifdef __GNUC__ --# define YYSTACK_ALLOC __builtin_alloca --# elif defined __BUILTIN_VA_ARG_INCR --# include <alloca.h> /* INFRINGES ON USER NAME SPACE */ --# elif defined _AIX --# define YYSTACK_ALLOC __alloca --# elif defined _MSC_VER --# include <malloc.h> /* INFRINGES ON USER NAME SPACE */ --# define alloca _alloca --# else --# define YYSTACK_ALLOC alloca --# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ -- || defined __cplusplus || defined _MSC_VER) --# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ --# ifndef _STDLIB_H --# define _STDLIB_H 1 --# endif --# endif --# endif --# endif --# endif -- --# ifdef YYSTACK_ALLOC -- /* Pacify GCC's `empty if-body' warning. */ --# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) --# ifndef YYSTACK_ALLOC_MAXIMUM -- /* The OS might guarantee only one guard page at the bottom of the stack, -- and a page size can be as small as 4096 bytes. So we cannot safely -- invoke alloca (N) if N exceeds 4096. Use a slightly smaller number -- to allow for a few compiler-allocated temporary stack slots. */ --# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ --# endif --# else --# define YYSTACK_ALLOC YYMALLOC --# define YYSTACK_FREE YYFREE --# ifndef YYSTACK_ALLOC_MAXIMUM --# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM --# endif --# if (defined __cplusplus && ! defined _STDLIB_H \ -- && ! ((defined YYMALLOC || defined malloc) \ -- && (defined YYFREE || defined free))) --# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ --# ifndef _STDLIB_H --# define _STDLIB_H 1 --# endif --# endif --# ifndef YYMALLOC --# define YYMALLOC malloc --# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ -- || defined __cplusplus || defined _MSC_VER) --void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ --# endif --# endif --# ifndef YYFREE --# define YYFREE free --# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ -- || defined __cplusplus || defined _MSC_VER) --void free (void *); /* INFRINGES ON USER NAME SPACE */ --# endif --# endif --# endif --#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ -- -- --#if (! defined yyoverflow \ -- && (! defined __cplusplus \ -- || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) -- --/* A type that is properly aligned for any stack member. */ --union yyalloc --{ -- yytype_int16 yyss; -- YYSTYPE yyvs; -- }; -- --/* The size of the maximum gap between one aligned stack and the next. */ --# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) -- --/* The size of an array large to enough to hold all stacks, each with -- N elements. */ --# define YYSTACK_BYTES(N) \ -- ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ -- + YYSTACK_GAP_MAXIMUM) -- --/* Copy COUNT objects from FROM to TO. The source and destination do -- not overlap. */ --# ifndef YYCOPY --# if defined __GNUC__ && 1 < __GNUC__ --# define YYCOPY(To, From, Count) \ -- __builtin_memcpy (To, From, (Count) * sizeof (*(From))) --# else --# define YYCOPY(To, From, Count) \ -- do \ -- { \ -- YYSIZE_T yyi; \ -- for (yyi = 0; yyi < (Count); yyi++) \ -- (To)[yyi] = (From)[yyi]; \ -- } \ -- while (YYID (0)) --# endif --# endif -- --/* Relocate STACK from its old location to the new one. The -- local variables YYSIZE and YYSTACKSIZE give the old and new number of -- elements in the stack, and YYPTR gives the new location of the -- stack. Advance YYPTR to a properly aligned location for the next -- stack. */ --# define YYSTACK_RELOCATE(Stack) \ -- do \ -- { \ -- YYSIZE_T yynewbytes; \ -- YYCOPY (&yyptr->Stack, Stack, yysize); \ -- Stack = &yyptr->Stack; \ -- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ -- yyptr += yynewbytes / sizeof (*yyptr); \ -- } \ -- while (YYID (0)) -- --#endif -- --/* YYFINAL -- State number of the termination state. */ --#define YYFINAL 3 --/* YYLAST -- Last index in YYTABLE. */ --#define YYLAST 37 -- --/* YYNTOKENS -- Number of terminals. */ --#define YYNTOKENS 27 --/* YYNNTS -- Number of nonterminals. */ --#define YYNNTS 21 --/* YYNRULES -- Number of rules. */ --#define YYNRULES 44 --/* YYNRULES -- Number of states. */ --#define YYNSTATES 54 -- --/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ --#define YYUNDEFTOK 2 --#define YYMAXUTOK 281 -- --#define YYTRANSLATE(YYX) \ -- ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -- --/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ --static const yytype_uint8 yytranslate[] = --{ -- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -- 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, -- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, -- 25, 26 --}; -- --#if YYDEBUG --/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in -- YYRHS. */ --static const yytype_uint8 yyprhs[] = --{ -- 0, 0, 3, 4, 7, 10, 11, 13, 15, 17, -- 19, 21, 25, 29, 30, 33, 35, 37, 39, 41, -- 43, 45, 47, 49, 50, 52, 54, 56, 58, 60, -- 62, 64, 65, 69, 70, 78, 80, 81, 85, 88, -- 89, 90, 96, 97, 100 --}; -- --/* YYRHS -- A `-1'-separated list of the rules' RHS. */ --static const yytype_int8 yyrhs[] = --{ -- 28, 0, -1, -1, 29, 30, -1, 30, 31, -1, -- -1, 32, -1, 38, -1, 40, -1, 46, -1, 47, -- -1, 3, 37, 33, -1, 33, 34, 35, -1, -1, -- 34, 36, -1, 36, -1, 16, -1, 13, -1, 25, -- -1, 24, -1, 20, -1, 10, -1, 21, -1, -1, -- 23, -1, 22, -1, 4, -1, 5, -1, 6, -1, -- 7, -1, 8, -1, -1, 3, 39, 43, -1, -1, -- 3, 9, 42, 10, 41, 43, 44, -1, 19, -1, -- -1, 18, 30, 17, -1, 11, 31, -1, -1, -1, -- 26, 18, 45, 43, 17, -1, -1, 15, 13, -1, -- 13, -1 --}; -- --/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ --static const yytype_uint16 yyrline[] = --{ -- 0, 136, 136, 136, 143, 148, 151, 155, 159, 163, -- 167, 173, 185, 193, 200, 201, 202, 203, 204, 205, -- 211, 212, 215, 222, 227, 228, 231, 231, 231, 231, -- 231, 235, 234, 249, 248, 273, 274, 277, 278, 283, -- 287, 286, 300, 305, 313 --}; --#endif -- --#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE --/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. -- First, the terminals, then, starting at YYNTOKENS, nonterminals. */ --static const char *const yytname[] = --{ -- "$end", "error", "$undefined", "ID_SIMPLE", "EQ", "PLUSEQ", "MINUSQE", -- "STAREQ", "TILDEEQ", "LBRACE", "RBRACE", "COLON", "NUMSIGN", "NEWLINE", -- "NUMBER", "COMMENT", "CONT", "RCURLY", "LCURLY", "ID_ARGS", -- "LIST_COMMENT", "LIST_COMMENT_WITHOUT_NEWLINE", "QUOTED_VARIABLE_VALUE", -- "VARIABLE_VALUE", "INDENT", "LIST_WS", "\"else\"", "$accept", "project", -- "@1", "statements", "statement", "variable_assignment", -- "multiline_values", "line_body", "opt_comment", "variable_value", -- "operator", "scope", "@2", "function_call", "@3", "function_args", -- "scope_body", "else_statement", "@4", "comment", "emptyline", 0 --}; --#endif -- --# ifdef YYPRINT --/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to -- token YYLEX-NUM. */ --static const yytype_uint16 yytoknum[] = --{ -- 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, -- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, -- 275, 276, 277, 278, 279, 280, 281 --}; --# endif -- --/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ --static const yytype_uint8 yyr1[] = --{ -- 0, 27, 29, 28, 30, 30, 31, 31, 31, 31, -- 31, 32, 33, 33, 34, 34, 34, 34, 34, 34, -- 34, 34, 35, 35, 36, 36, 37, 37, 37, 37, -- 37, 39, 38, 41, 40, 42, 42, 43, 43, 43, -- 45, 44, 44, 46, 47 --}; -- --/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ --static const yytype_uint8 yyr2[] = --{ -- 0, 2, 0, 2, 2, 0, 1, 1, 1, 1, -- 1, 3, 3, 0, 2, 1, 1, 1, 1, 1, -- 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, -- 1, 0, 3, 0, 7, 1, 0, 3, 2, 0, -- 0, 5, 0, 2, 1 --}; -- --/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state -- STATE-NUM when YYTABLE doesn't specify something else to do. Zero -- means the default is an error. */ --static const yytype_uint8 yydefact[] = --{ -- 2, 0, 5, 1, 3, 31, 44, 0, 4, 6, -- 7, 8, 9, 10, 26, 27, 28, 29, 30, 36, -- 13, 39, 43, 35, 0, 11, 0, 5, 32, 33, -- 21, 17, 16, 20, 25, 24, 19, 18, 23, 15, -- 38, 0, 39, 22, 12, 14, 37, 42, 0, 34, -- 40, 39, 0, 41 --}; -- --/* YYDEFGOTO[NTERM-NUM]. */ --static const yytype_int8 yydefgoto[] = --{ -- -1, 1, 2, 4, 8, 9, 25, 38, 44, 39, -- 20, 10, 21, 11, 42, 24, 28, 49, 51, 12, -- 13 --}; -- --/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing -- STATE-NUM. */ --#define YYPACT_NINF -41 --static const yytype_int8 yypact[] = --{ -- -41, 1, -41, -41, 5, 18, -41, -9, -41, -41, -- -41, -41, -41, -41, -41, -41, -41, -41, -41, -14, -- -41, -2, -41, -41, 21, -10, 5, -41, -41, -41, -- -41, -41, -41, -41, -41, -41, -41, -41, 7, -41, -- -41, 4, -2, -41, -41, -41, -41, 6, 15, -41, -- -41, -2, 17, -41 --}; -- --/* YYPGOTO[NTERM-NUM]. */ --static const yytype_int8 yypgoto[] = --{ -- -41, -41, -41, 8, 10, -41, -41, -41, -41, -1, -- -41, -41, -41, -41, -41, -41, -40, -41, -41, -41, -- -41 --}; -- --/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If -- positive, shift that token. If negative, reduce the rule which -- number is the opposite. If zero, do what YYDEFACT says. -- If YYTABLE_NINF, syntax error. */ --#define YYTABLE_NINF -1 --static const yytype_uint8 yytable[] = --{ -- 30, 3, 47, 31, 22, 23, 32, 5, 5, 26, -- 33, 52, 34, 35, 36, 37, 27, 6, 6, 7, -- 7, 46, 14, 15, 16, 17, 18, 19, 43, 34, -- 35, 29, 48, 50, 53, 41, 40, 45 --}; -- --static const yytype_uint8 yycheck[] = --{ -- 10, 0, 42, 13, 13, 19, 16, 3, 3, 11, -- 20, 51, 22, 23, 24, 25, 18, 13, 13, 15, -- 15, 17, 4, 5, 6, 7, 8, 9, 21, 22, -- 23, 10, 26, 18, 17, 27, 26, 38 --}; -- --/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing -- symbol of state STATE-NUM. */ --static const yytype_uint8 yystos[] = --{ -- 0, 28, 29, 0, 30, 3, 13, 15, 31, 32, -- 38, 40, 46, 47, 4, 5, 6, 7, 8, 9, -- 37, 39, 13, 19, 42, 33, 11, 18, 43, 10, -- 10, 13, 16, 20, 22, 23, 24, 25, 34, 36, -- 31, 30, 41, 21, 35, 36, 17, 43, 26, 44, -- 18, 45, 43, 17 --}; -- --#define yyerrok (yyerrstatus = 0) --#define yyclearin (yychar = YYEMPTY) --#define YYEMPTY (-2) --#define YYEOF 0 -- --#define YYACCEPT goto yyacceptlab --#define YYABORT goto yyabortlab --#define YYERROR goto yyerrorlab -- -- --/* Like YYERROR except do call yyerror. This remains here temporarily -- to ease the transition to the new meaning of YYERROR, for GCC. -- Once GCC version 2 has supplanted version 1, this can go. */ -- --#define YYFAIL goto yyerrlab -- --#define YYRECOVERING() (!!yyerrstatus) -- --#define YYBACKUP(Token, Value) \ --do \ -- if (yychar == YYEMPTY && yylen == 1) \ -- { \ -- yychar = (Token); \ -- yylval = (Value); \ -- yytoken = YYTRANSLATE (yychar); \ -- YYPOPSTACK (1); \ -- goto yybackup; \ -- } \ -- else \ -- { \ -- yyerror (YY_("syntax error: cannot back up")); \ -- YYERROR; \ -- } \ --while (YYID (0)) -- -- --#define YYTERROR 1 --#define YYERRCODE 256 -- -- --/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. -- If N is 0, then set CURRENT to the empty location which ends -- the previous symbol: RHS[0] (always defined). */ -- --#define YYRHSLOC(Rhs, K) ((Rhs)[K]) --#ifndef YYLLOC_DEFAULT --# define YYLLOC_DEFAULT(Current, Rhs, N) \ -- do \ -- if (YYID (N)) \ -- { \ -- (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ -- (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ -- (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ -- (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ -- } \ -- else \ -- { \ -- (Current).first_line = (Current).last_line = \ -- YYRHSLOC (Rhs, 0).last_line; \ -- (Current).first_column = (Current).last_column = \ -- YYRHSLOC (Rhs, 0).last_column; \ -- } \ -- while (YYID (0)) --#endif -- -- --/* YY_LOCATION_PRINT -- Print the location on the stream. -- This macro was not mandated originally: define only if we know -- we won't break user code: when these are the locations we know. */ -- --#ifndef YY_LOCATION_PRINT --# if YYLTYPE_IS_TRIVIAL --# define YY_LOCATION_PRINT(File, Loc) \ -- fprintf (File, "%d.%d-%d.%d", \ -- (Loc).first_line, (Loc).first_column, \ -- (Loc).last_line, (Loc).last_column) --# else --# define YY_LOCATION_PRINT(File, Loc) ((void) 0) --# endif --#endif -- -- --/* YYLEX -- calling `yylex' with the right arguments. */ -- --#ifdef YYLEX_PARAM --# define YYLEX yylex (YYLEX_PARAM) --#else --# define YYLEX yylex () --#endif -- --/* Enable debugging if requested. */ --#if YYDEBUG -- --# ifndef YYFPRINTF --# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ --# define YYFPRINTF fprintf --# endif -- --# define YYDPRINTF(Args) \ --do { \ -- if (yydebug) \ -- YYFPRINTF Args; \ --} while (YYID (0)) -- --# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ --do { \ -- if (yydebug) \ -- { \ -- YYFPRINTF (stderr, "%s ", Title); \ -- yy_symbol_print (stderr, \ -- Type, Value); \ -- YYFPRINTF (stderr, "\n"); \ -- } \ --} while (YYID (0)) -- -- --/*--------------------------------. --| Print this symbol on YYOUTPUT. | --`--------------------------------*/ -- --/*ARGSUSED*/ --#if (defined __STDC__ || defined __C99__FUNC__ \ -- || defined __cplusplus || defined _MSC_VER) --static void --yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) --#else --static void --yy_symbol_value_print (yyoutput, yytype, yyvaluep) -- FILE *yyoutput; -- int yytype; -- YYSTYPE const * const yyvaluep; --#endif --{ -- if (!yyvaluep) -- return; --# ifdef YYPRINT -- if (yytype < YYNTOKENS) -- YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); --# else -- YYUSE (yyoutput); --# endif -- switch (yytype) -- { -- default: -- break; -- } --} -- -- --/*--------------------------------. --| Print this symbol on YYOUTPUT. | --`--------------------------------*/ -- --#if (defined __STDC__ || defined __C99__FUNC__ \ -- || defined __cplusplus || defined _MSC_VER) --static void --yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) --#else --static void --yy_symbol_print (yyoutput, yytype, yyvaluep) -- FILE *yyoutput; -- int yytype; -- YYSTYPE const * const yyvaluep; --#endif --{ -- if (yytype < YYNTOKENS) -- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); -- else -- YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); -- -- yy_symbol_value_print (yyoutput, yytype, yyvaluep); -- YYFPRINTF (yyoutput, ")"); --} -- --/*------------------------------------------------------------------. --| yy_stack_print -- Print the state stack from its BOTTOM up to its | --| TOP (included). | --`------------------------------------------------------------------*/ -- --#if (defined __STDC__ || defined __C99__FUNC__ \ -- || defined __cplusplus || defined _MSC_VER) --static void --yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) --#else --static void --yy_stack_print (bottom, top) -- yytype_int16 *bottom; -- yytype_int16 *top; --#endif --{ -- YYFPRINTF (stderr, "Stack now"); -- for (; bottom <= top; ++bottom) -- YYFPRINTF (stderr, " %d", *bottom); -- YYFPRINTF (stderr, "\n"); --} -- --# define YY_STACK_PRINT(Bottom, Top) \ --do { \ -- if (yydebug) \ -- yy_stack_print ((Bottom), (Top)); \ --} while (YYID (0)) -- -- --/*------------------------------------------------. --| Report that the YYRULE is going to be reduced. | --`------------------------------------------------*/ -- --#if (defined __STDC__ || defined __C99__FUNC__ \ -- || defined __cplusplus || defined _MSC_VER) --static void --yy_reduce_print (YYSTYPE *yyvsp, int yyrule) --#else --static void --yy_reduce_print (yyvsp, yyrule) -- YYSTYPE *yyvsp; -- int yyrule; --#endif --{ -- int yynrhs = yyr2[yyrule]; -- int yyi; -- unsigned long int yylno = yyrline[yyrule]; -- YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", -- yyrule - 1, yylno); -- /* The symbols being reduced. */ -- for (yyi = 0; yyi < yynrhs; yyi++) -- { -- fprintf (stderr, " $%d = ", yyi + 1); -- yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], -- &(yyvsp[(yyi + 1) - (yynrhs)]) -- ); -- fprintf (stderr, "\n"); -- } --} -- --# define YY_REDUCE_PRINT(Rule) \ --do { \ -- if (yydebug) \ -- yy_reduce_print (yyvsp, Rule); \ --} while (YYID (0)) -- --/* Nonzero means print parse trace. It is left uninitialized so that -- multiple parsers can coexist. */ --int yydebug; --#else /* !YYDEBUG */ --# define YYDPRINTF(Args) --# define YY_SYMBOL_PRINT(Title, Type, Value, Location) --# define YY_STACK_PRINT(Bottom, Top) --# define YY_REDUCE_PRINT(Rule) --#endif /* !YYDEBUG */ -- -- --/* YYINITDEPTH -- initial size of the parser's stacks. */ --#ifndef YYINITDEPTH --# define YYINITDEPTH 200 --#endif -- --/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only -- if the built-in stack extension method is used). -- -- Do not make this value too large; the results are undefined if -- YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) -- evaluated with infinite-precision integer arithmetic. */ -- --#ifndef YYMAXDEPTH --# define YYMAXDEPTH 10000 --#endif -- -- -- --#if YYERROR_VERBOSE -- --# ifndef yystrlen --# if defined __GLIBC__ && defined _STRING_H --# define yystrlen strlen --# else --/* Return the length of YYSTR. */ --#if (defined __STDC__ || defined __C99__FUNC__ \ -- || defined __cplusplus || defined _MSC_VER) --static YYSIZE_T --yystrlen (const char *yystr) --#else --static YYSIZE_T --yystrlen (yystr) -- const char *yystr; --#endif --{ -- YYSIZE_T yylen; -- for (yylen = 0; yystr[yylen]; yylen++) -- continue; -- return yylen; --} --# endif --# endif -- --# ifndef yystpcpy --# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE --# define yystpcpy stpcpy --# else --/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in -- YYDEST. */ --#if (defined __STDC__ || defined __C99__FUNC__ \ -- || defined __cplusplus || defined _MSC_VER) --static char * --yystpcpy (char *yydest, const char *yysrc) --#else --static char * --yystpcpy (yydest, yysrc) -- char *yydest; -- const char *yysrc; --#endif --{ -- char *yyd = yydest; -- const char *yys = yysrc; -- -- while ((*yyd++ = *yys++) != '\0') -- continue; -- -- return yyd - 1; --} --# endif --# endif -- --# ifndef yytnamerr --/* Copy to YYRES the contents of YYSTR after stripping away unnecessary -- quotes and backslashes, so that it's suitable for yyerror. The -- heuristic is that double-quoting is unnecessary unless the string -- contains an apostrophe, a comma, or backslash (other than -- backslash-backslash). YYSTR is taken from yytname. If YYRES is -- null, do not copy; instead, return the length of what the result -- would have been. */ --static YYSIZE_T --yytnamerr (char *yyres, const char *yystr) --{ -- if (*yystr == '"') -- { -- YYSIZE_T yyn = 0; -- char const *yyp = yystr; -- -- for (;;) -- switch (*++yyp) -- { -- case '\'': -- case ',': -- goto do_not_strip_quotes; -- -- case '\\': -- if (*++yyp != '\\') -- goto do_not_strip_quotes; -- /* Fall through. */ -- default: -- if (yyres) -- yyres[yyn] = *yyp; -- yyn++; -- break; -- -- case '"': -- if (yyres) -- yyres[yyn] = '\0'; -- return yyn; -- } -- do_not_strip_quotes: ; -- } -- -- if (! yyres) -- return yystrlen (yystr); -- -- return yystpcpy (yyres, yystr) - yyres; --} --# endif -- --/* Copy into YYRESULT an error message about the unexpected token -- YYCHAR while in state YYSTATE. Return the number of bytes copied, -- including the terminating null byte. If YYRESULT is null, do not -- copy anything; just return the number of bytes that would be -- copied. As a special case, return 0 if an ordinary "syntax error" -- message will do. Return YYSIZE_MAXIMUM if overflow occurs during -- size calculation. */ --static YYSIZE_T --yysyntax_error (char *yyresult, int yystate, int yychar) --{ -- int yyn = yypact[yystate]; -- -- if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) -- return 0; -- else -- { -- int yytype = YYTRANSLATE (yychar); -- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); -- YYSIZE_T yysize = yysize0; -- YYSIZE_T yysize1; -- int yysize_overflow = 0; -- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; -- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; -- int yyx; -- --# if 0 -- /* This is so xgettext sees the translatable formats that are -- constructed on the fly. */ -- YY_("syntax error, unexpected %s"); -- YY_("syntax error, unexpected %s, expecting %s"); -- YY_("syntax error, unexpected %s, expecting %s or %s"); -- YY_("syntax error, unexpected %s, expecting %s or %s or %s"); -- YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); --# endif -- char *yyfmt; -- char const *yyf; -- static char const yyunexpected[] = "syntax error, unexpected %s"; -- static char const yyexpecting[] = ", expecting %s"; -- static char const yyor[] = " or %s"; -- char yyformat[sizeof yyunexpected -- + sizeof yyexpecting - 1 -- + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) -- * (sizeof yyor - 1))]; -- char const *yyprefix = yyexpecting; -- -- /* Start YYX at -YYN if negative to avoid negative indexes in -- YYCHECK. */ -- int yyxbegin = yyn < 0 ? -yyn : 0; -- -- /* Stay within bounds of both yycheck and yytname. */ -- int yychecklim = YYLAST - yyn + 1; -- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; -- int yycount = 1; -- -- yyarg[0] = yytname[yytype]; -- yyfmt = yystpcpy (yyformat, yyunexpected); -- -- for (yyx = yyxbegin; yyx < yyxend; ++yyx) -- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) -- { -- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) -- { -- yycount = 1; -- yysize = yysize0; -- yyformat[sizeof yyunexpected - 1] = '\0'; -- break; -- } -- yyarg[yycount++] = yytname[yyx]; -- yysize1 = yysize + yytnamerr (0, yytname[yyx]); -- yysize_overflow |= (yysize1 < yysize); -- yysize = yysize1; -- yyfmt = yystpcpy (yyfmt, yyprefix); -- yyprefix = yyor; -- } -- -- yyf = YY_(yyformat); -- yysize1 = yysize + yystrlen (yyf); -- yysize_overflow |= (yysize1 < yysize); -- yysize = yysize1; -- -- if (yysize_overflow) -- return YYSIZE_MAXIMUM; -- -- if (yyresult) -- { -- /* Avoid sprintf, as that infringes on the user's name space. -- Don't have undefined behavior even if the translation -- produced a string with the wrong number of "%s"s. */ -- char *yyp = yyresult; -- int yyi = 0; -- while ((*yyp = *yyf) != '\0') -- { -- if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) -- { -- yyp += yytnamerr (yyp, yyarg[yyi++]); -- yyf += 2; -- } -- else -- { -- yyp++; -- yyf++; -- } -- } -- } -- return yysize; -- } --} --#endif /* YYERROR_VERBOSE */ -- -- --/*-----------------------------------------------. --| Release the memory associated to this symbol. | --`-----------------------------------------------*/ -- --/*ARGSUSED*/ --#if (defined __STDC__ || defined __C99__FUNC__ \ -- || defined __cplusplus || defined _MSC_VER) --static void --yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) --#else --static void --yydestruct (yymsg, yytype, yyvaluep) -- const char *yymsg; -- int yytype; -- YYSTYPE *yyvaluep; --#endif --{ -- YYUSE (yyvaluep); -- -- if (!yymsg) -- yymsg = "Deleting"; -- YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); -- -- switch (yytype) -- { -- -- default: -- break; -- } --} -- -- --/* Prevent warnings from -Wmissing-prototypes. */ -- --#ifdef YYPARSE_PARAM --#if defined __STDC__ || defined __cplusplus --int yyparse (void *YYPARSE_PARAM); --#else --int yyparse (); --#endif --#else /* ! YYPARSE_PARAM */ --#if defined __STDC__ || defined __cplusplus --int yyparse (void); --#else --int yyparse (); --#endif --#endif /* ! YYPARSE_PARAM */ -- -- -- --/* The look-ahead symbol. */ --int yychar; -- --/* The semantic value of the look-ahead symbol. */ --YYSTYPE yylval; -- --/* Number of syntax errors so far. */ --int yynerrs; -- -+#endif - -+/* Suppress unused-variable warnings by "using" E. */ -+#define YYUSE(e) ((void) (e)) - --/*----------. --| yyparse. | --`----------*/ -+/* A pseudo ostream that takes yydebug_ into account. */ -+# define YYCDEBUG \ -+ for (bool yydebugcond_ = yydebug_; yydebugcond_; yydebugcond_ = false) \ -+ (*yycdebug_) - --#ifdef YYPARSE_PARAM --#if (defined __STDC__ || defined __C99__FUNC__ \ -- || defined __cplusplus || defined _MSC_VER) --int --yyparse (void *YYPARSE_PARAM) --#else --int --yyparse (YYPARSE_PARAM) -- void *YYPARSE_PARAM; --#endif --#else /* ! YYPARSE_PARAM */ --#if (defined __STDC__ || defined __C99__FUNC__ \ -- || defined __cplusplus || defined _MSC_VER) --int --yyparse (void) --#else --int --yyparse () -+/* Enable debugging if requested. */ -+#if YYDEBUG - --#endif --#endif --{ -- -- int yystate; -- int yyn; -- int yyresult; -- /* Number of tokens to shift before error messages enabled. */ -- int yyerrstatus; -- /* Look-ahead token as an internal (translated) token number. */ -- int yytoken = 0; --#if YYERROR_VERBOSE -- /* Buffer for error messages, and its allocated size. */ -- char yymsgbuf[128]; -- char *yymsg = yymsgbuf; -- YYSIZE_T yymsg_alloc = sizeof yymsgbuf; --#endif -+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -+do { \ -+ if (yydebug_) \ -+ { \ -+ *yycdebug_ << Title << ' '; \ -+ yy_symbol_print_ ((Type), (Value), (Location)); \ -+ *yycdebug_ << std::endl; \ -+ } \ -+} while (false) - -- /* Three stacks and their tools: -- `yyss': related to states, -- `yyvs': related to semantic values, -- `yyls': related to locations. -+# define YY_REDUCE_PRINT(Rule) \ -+do { \ -+ if (yydebug_) \ -+ yy_reduce_print_ (Rule); \ -+} while (false) - -- Refer to the stacks thru separate pointers, to allow yyoverflow -- to reallocate them elsewhere. */ -+# define YY_STACK_PRINT() \ -+do { \ -+ if (yydebug_) \ -+ yystack_print_ (); \ -+} while (false) - -- /* The state stack. */ -- yytype_int16 yyssa[YYINITDEPTH]; -- yytype_int16 *yyss = yyssa; -- yytype_int16 *yyssp; -+#else /* !YYDEBUG */ - -- /* The semantic value stack. */ -- YYSTYPE yyvsa[YYINITDEPTH]; -- YYSTYPE *yyvs = yyvsa; -- YYSTYPE *yyvsp; -+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -+# define YY_REDUCE_PRINT(Rule) -+# define YY_STACK_PRINT() - -+#endif /* !YYDEBUG */ - -+#define YYACCEPT goto yyacceptlab -+#define YYABORT goto yyabortlab -+#define YYERROR goto yyerrorlab - --#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) -+namespace QMake -+{ -+#if YYERROR_VERBOSE - -- YYSIZE_T yystacksize = YYINITDEPTH; -+ /* Return YYSTR after stripping away unnecessary quotes and -+ backslashes, so that it's suitable for yyerror. The heuristic is -+ that double-quoting is unnecessary unless the string contains an -+ apostrophe, a comma, or backslash (other than backslash-backslash). -+ YYSTR is taken from yytname. */ -+ std::string -+ Parser::yytnamerr_ (const char *yystr) -+ { -+ if (*yystr == '"') -+ { -+ std::string yyr = ""; -+ char const *yyp = yystr; - -- /* The variables used to return semantic value and location from the -- action routines. */ -- YYSTYPE yyval; -+ for (;;) -+ switch (*++yyp) -+ { -+ case '\'': -+ case ',': -+ goto do_not_strip_quotes; -+ -+ case '\\': -+ if (*++yyp != '\\') -+ goto do_not_strip_quotes; -+ /* Fall through. */ -+ default: -+ yyr += *yyp; -+ break; - -+ case '"': -+ return yyr; -+ } -+ do_not_strip_quotes: ; -+ } - -- /* The number of symbols on the RHS of the reduced rule. -- Keep to zero when no symbol should be popped. */ -- int yylen = 0; -+ return yystr; -+ } - -- YYDPRINTF ((stderr, "Starting parse\n")); -+#endif - -- yystate = 0; -- yyerrstatus = 0; -- yynerrs = 0; -- yychar = YYEMPTY; /* Cause a token to be read. */ -+ /// Build a parser object. -+ Parser::Parser (QMake::Lexer* lexer_yyarg, QValueStack<ProjectAST*>& projects_yyarg, int depth_yyarg) -+ : yydebug_ (false), -+ yycdebug_ (&std::cerr), -+ lexer (lexer_yyarg), -+ projects (projects_yyarg), -+ depth (depth_yyarg) -+ { -+ } -+ -+ Parser::~Parser () -+ { -+ } - -- /* Initialize stack pointers. -- Waste one element of value and location stack -- so that they stay on the same level as the state stack. -- The wasted elements are never initialized. */ -+#if YYDEBUG -+ /*--------------------------------. -+ | Print this symbol on YYOUTPUT. | -+ `--------------------------------*/ -+ -+ inline void -+ Parser::yy_symbol_value_print_ (int yytype, -+ const semantic_type* yyvaluep, const location_type* yylocationp) -+ { -+ YYUSE (yylocationp); -+ YYUSE (yyvaluep); -+ switch (yytype) -+ { -+ default: -+ break; -+ } -+ } - -- yyssp = yyss; -- yyvsp = yyvs; - -- goto yysetstate; -+ void -+ Parser::yy_symbol_print_ (int yytype, -+ const semantic_type* yyvaluep, const location_type* yylocationp) -+ { -+ *yycdebug_ << (yytype < yyntokens_ ? "token" : "nterm") -+ << ' ' << yytname_[yytype] << " (" -+ << *yylocationp << ": "; -+ yy_symbol_value_print_ (yytype, yyvaluep, yylocationp); -+ *yycdebug_ << ')'; -+ } -+#endif /* ! YYDEBUG */ -+ -+ void -+ Parser::yydestruct_ (const char* yymsg, -+ int yytype, semantic_type* yyvaluep, location_type* yylocationp) -+ { -+ YYUSE (yylocationp); -+ YYUSE (yymsg); -+ YYUSE (yyvaluep); - --/*------------------------------------------------------------. --| yynewstate -- Push a new state, which is found in yystate. | --`------------------------------------------------------------*/ -- yynewstate: -- /* In all cases, when you get here, the value and location stacks -- have just been pushed. So pushing a state here evens the stacks. */ -- yyssp++; -+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - -- yysetstate: -- *yyssp = yystate; -+ switch (yytype) -+ { -+ -+ default: -+ break; -+ } -+ } - -- if (yyss + yystacksize - 1 <= yyssp) -- { -- /* Get the current used size of the three stacks, in elements. */ -- YYSIZE_T yysize = yyssp - yyss + 1; -+ void -+ Parser::yypop_ (unsigned int n) -+ { -+ yystate_stack_.pop (n); -+ yysemantic_stack_.pop (n); -+ yylocation_stack_.pop (n); -+ } -+ -+ std::ostream& -+ Parser::debug_stream () const -+ { -+ return *yycdebug_; -+ } -+ -+ void -+ Parser::set_debug_stream (std::ostream& o) -+ { -+ yycdebug_ = &o; -+ } -+ -+ -+ Parser::debug_level_type -+ Parser::debug_level () const -+ { -+ return yydebug_; -+ } -+ -+ void -+ Parser::set_debug_level (debug_level_type l) -+ { -+ yydebug_ = l; -+ } -+ -+ -+ int -+ Parser::parse () -+ { -+ /// Look-ahead and look-ahead in internal form. -+ int yychar = yyempty_; -+ int yytoken = 0; -+ -+ /* State. */ -+ int yyn; -+ int yylen = 0; -+ int yystate = 0; -+ -+ /* Error handling. */ -+ int yynerrs_ = 0; -+ int yyerrstatus_ = 0; -+ -+ /// Semantic value of the look-ahead. -+ semantic_type yylval; -+ /// Location of the look-ahead. -+ location_type yylloc; -+ /// The locations where the error started and ended. -+ location yyerror_range[2]; -+ -+ /// $$. -+ semantic_type yyval; -+ /// @$. -+ location_type yyloc; -+ -+ int yyresult; -+ -+ YYCDEBUG << "Starting parse" << std::endl; -+ -+ -+ /* Initialize the stacks. The initial state will be pushed in -+ yynewstate, since the latter expects the semantical and the -+ location values to have been already stored, initialize these -+ stacks with a primary value. */ -+ yystate_stack_ = state_stack_type (0); -+ yysemantic_stack_ = semantic_stack_type (0); -+ yylocation_stack_ = location_stack_type (0); -+ yysemantic_stack_.push (yylval); -+ yylocation_stack_.push (yylloc); -+ -+ /* New state. */ -+ yynewstate: -+ yystate_stack_.push (yystate); -+ YYCDEBUG << "Entering state " << yystate << std::endl; -+ goto yybackup; -+ -+ /* Backup. */ -+ yybackup: -+ -+ /* Try to take a decision without look-ahead. */ -+ yyn = yypact_[yystate]; -+ if (yyn == yypact_ninf_) -+ goto yydefault; - --#ifdef yyoverflow -+ /* Read a look-ahead token. */ -+ if (yychar == yyempty_) - { -- /* Give user a chance to reallocate the stack. Use copies of -- these so that the &'s don't force the real ones into -- memory. */ -- YYSTYPE *yyvs1 = yyvs; -- yytype_int16 *yyss1 = yyss; -- -- -- /* Each stack pointer address is followed by the size of the -- data in use in that stack, in bytes. This used to be a -- conditional around just the two extra args, but that might -- be undefined if yyoverflow is a macro. */ -- yyoverflow (YY_("memory exhausted"), -- &yyss1, yysize * sizeof (*yyssp), -- &yyvs1, yysize * sizeof (*yyvsp), -+ YYCDEBUG << "Reading a token: "; -+ yychar = yylex (&yylval, lexer); -+ } - -- &yystacksize); - -- yyss = yyss1; -- yyvs = yyvs1; -+ /* Convert token to internal form. */ -+ if (yychar <= yyeof_) -+ { -+ yychar = yytoken = yyeof_; -+ YYCDEBUG << "Now at end of input." << std::endl; - } --#else /* no yyoverflow */ --# ifndef YYSTACK_RELOCATE -- goto yyexhaustedlab; --# else -- /* Extend the stack our own way. */ -- if (YYMAXDEPTH <= yystacksize) -- goto yyexhaustedlab; -- yystacksize *= 2; -- if (YYMAXDEPTH < yystacksize) -- yystacksize = YYMAXDEPTH; -- -+ else - { -- yytype_int16 *yyss1 = yyss; -- union yyalloc *yyptr = -- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); -- if (! yyptr) -- goto yyexhaustedlab; -- YYSTACK_RELOCATE (yyss); -- YYSTACK_RELOCATE (yyvs); -- --# undef YYSTACK_RELOCATE -- if (yyss1 != yyssa) -- YYSTACK_FREE (yyss1); -+ yytoken = yytranslate_ (yychar); -+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } --# endif --#endif /* no yyoverflow */ -- -- yyssp = yyss + yysize - 1; -- yyvsp = yyvs + yysize - 1; -- -- -- YYDPRINTF ((stderr, "Stack size increased to %lu\n", -- (unsigned long int) yystacksize)); -- -- if (yyss + yystacksize - 1 <= yyssp) -- YYABORT; -- } -- -- YYDPRINTF ((stderr, "Entering state %d\n", yystate)); -- -- goto yybackup; -- --/*-----------. --| yybackup. | --`-----------*/ --yybackup: - -- /* Do appropriate processing given the current state. Read a -- look-ahead token if we need one and don't already have one. */ -- -- /* First try to decide what to do without reference to look-ahead token. */ -- yyn = yypact[yystate]; -- if (yyn == YYPACT_NINF) -- goto yydefault; -- -- /* Not known => get a look-ahead token if don't already have one. */ -- -- /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ -- if (yychar == YYEMPTY) -- { -- YYDPRINTF ((stderr, "Reading a token: ")); -- yychar = YYLEX; -- } -- -- if (yychar <= YYEOF) -- { -- yychar = yytoken = YYEOF; -- YYDPRINTF ((stderr, "Now at end of input.\n")); -- } -- else -- { -- yytoken = YYTRANSLATE (yychar); -- YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); -- } -- -- /* If the proper action on seeing token YYTOKEN is to reduce or to -- detect an error, take that action. */ -- yyn += yytoken; -- if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) -- goto yydefault; -- yyn = yytable[yyn]; -- if (yyn <= 0) -- { -- if (yyn == 0 || yyn == YYTABLE_NINF) -+ /* If the proper action on seeing token YYTOKEN is to reduce or to -+ detect an error, take that action. */ -+ yyn += yytoken; -+ if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yytoken) -+ goto yydefault; -+ -+ /* Reduce or error. */ -+ yyn = yytable_[yyn]; -+ if (yyn <= 0) -+ { -+ if (yyn == 0 || yyn == yytable_ninf_) - goto yyerrlab; -- yyn = -yyn; -- goto yyreduce; -- } -- -- if (yyn == YYFINAL) -- YYACCEPT; -- -- /* Count tokens shifted since error; after three, turn off error -- status. */ -- if (yyerrstatus) -- yyerrstatus--; -- -- /* Shift the look-ahead token. */ -- YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); -- -- /* Discard the shifted token unless it is eof. */ -- if (yychar != YYEOF) -- yychar = YYEMPTY; -- -- yystate = yyn; -- *++yyvsp = yylval; -- -- goto yynewstate; -- -- --/*-----------------------------------------------------------. --| yydefault -- do the default action for the current state. | --`-----------------------------------------------------------*/ --yydefault: -- yyn = yydefact[yystate]; -- if (yyn == 0) -- goto yyerrlab; -- goto yyreduce; -- -- --/*-----------------------------. --| yyreduce -- Do a reduction. | --`-----------------------------*/ --yyreduce: -- /* yyn is the number of a rule to reduce with. */ -- yylen = yyr2[yyn]; -- -- /* If YYLEN is nonzero, implement the default value of the action: -- `$$ = $1'. -- -- Otherwise, the following line sets YYVAL to garbage. -- This behavior is undocumented and Bison -- users should not rely upon it. Assigning to YYVAL -- unconditionally makes the parser a bit smaller, and it avoids a -- GCC warning that YYVAL may be used uninitialized. */ -- yyval = yyvsp[1-yylen]; -+ yyn = -yyn; -+ goto yyreduce; -+ } - -+ /* Accept? */ -+ if (yyn == yyfinal_) -+ goto yyacceptlab; -+ -+ /* Shift the look-ahead token. */ -+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); -+ -+ /* Discard the token being shifted unless it is eof. */ -+ if (yychar != yyeof_) -+ yychar = yyempty_; -+ -+ yysemantic_stack_.push (yylval); -+ yylocation_stack_.push (yylloc); -+ -+ /* Count tokens shifted since error; after three, turn off error -+ status. */ -+ if (yyerrstatus_) -+ --yyerrstatus_; -+ -+ yystate = yyn; -+ goto yynewstate; -+ -+ /*-----------------------------------------------------------. -+ | yydefault -- do the default action for the current state. | -+ `-----------------------------------------------------------*/ -+ yydefault: -+ yyn = yydefact_[yystate]; -+ if (yyn == 0) -+ goto yyerrlab; -+ goto yyreduce; -+ -+ /*-----------------------------. -+ | yyreduce -- Do a reduction. | -+ `-----------------------------*/ -+ yyreduce: -+ yylen = yyr2_[yyn]; -+ /* If YYLEN is nonzero, implement the default value of the action: -+ `$$ = $1'. Otherwise, use the top of the stack. -+ -+ Otherwise, the following line sets YYVAL to garbage. -+ This behavior is undocumented and Bison -+ users should not rely upon it. */ -+ if (yylen) -+ yyval = yysemantic_stack_[yylen - 1]; -+ else -+ yyval = yysemantic_stack_[0]; - -- YY_REDUCE_PRINT (yyn); -- switch (yyn) - { -- case 2: --#line 136 "qmake.yy" -+ slice<location_type, location_stack_type> slice (yylocation_stack_, yylen); -+ YYLLOC_DEFAULT (yyloc, slice, yylen); -+ } -+ YY_REDUCE_PRINT (yyn); -+ switch (yyn) -+ { -+ case 2: -+#line 147 "qmake.yy" - { - ProjectAST *projectAST = new ProjectAST(); - projects.push(projectAST); -@@ -1510,73 +396,73 @@ - break; - - case 4: --#line 144 "qmake.yy" -+#line 155 "qmake.yy" - { -- projects.top()->addChildAST((yyvsp[(2) - (2)].node)); -- (yyvsp[(2) - (2)].node)->setDepth(depth); -+ projects.top()->addChildAST((yysemantic_stack_[(2) - (2)].node)); -+ (yysemantic_stack_[(2) - (2)].node)->setDepth(depth); - ;} - break; - - case 6: --#line 152 "qmake.yy" -+#line 163 "qmake.yy" - { -- (yyval.node) = (yyvsp[(1) - (1)].node); -+ (yyval.node) = (yysemantic_stack_[(1) - (1)].node); - ;} - break; - - case 7: --#line 156 "qmake.yy" -+#line 167 "qmake.yy" - { -- (yyval.node) = (yyvsp[(1) - (1)].node); -+ (yyval.node) = (yysemantic_stack_[(1) - (1)].node); - ;} - break; - - case 8: --#line 160 "qmake.yy" -+#line 171 "qmake.yy" - { -- (yyval.node) = (yyvsp[(1) - (1)].node); -+ (yyval.node) = (yysemantic_stack_[(1) - (1)].node); - ;} - break; - - case 9: --#line 164 "qmake.yy" -+#line 175 "qmake.yy" - { -- (yyval.node) = (yyvsp[(1) - (1)].node); -+ (yyval.node) = (yysemantic_stack_[(1) - (1)].node); - ;} - break; - - case 10: --#line 168 "qmake.yy" -+#line 179 "qmake.yy" - { - (yyval.node) = new NewLineAST(); - ;} - break; - - case 11: --#line 174 "qmake.yy" -+#line 185 "qmake.yy" - { - AssignmentAST *node = new AssignmentAST(); -- node->scopedID = (yyvsp[(1) - (3)].value); -- node->op = (yyvsp[(2) - (3)].value); -- node->values = (yyvsp[(3) - (3)].values); -- node->indent = (yyvsp[(3) - (3)].indent); -- node->commentnode = (yyvsp[(3) - (3)].node); -+ node->scopedID = (yysemantic_stack_[(3) - (1)].value); -+ node->op = (yysemantic_stack_[(3) - (2)].value); -+ node->values = (yysemantic_stack_[(3) - (3)].values); -+ node->indent = (yysemantic_stack_[(3) - (3)].indent); -+ node->commentnode = (yysemantic_stack_[(3) - (3)].node); - (yyval.node) = node; - ;} - break; - - case 12: --#line 186 "qmake.yy" -+#line 197 "qmake.yy" - { -- (yyval.values) += (yyvsp[(2) - (3)].values); -- if( (yyvsp[(2) - (3)].indent) != "" && (yyval.indent) == "" ) -- (yyval.indent) = (yyvsp[(2) - (3)].indent); -- (yyval.node) = (yyvsp[(3) - (3)].node); -+ (yyval.values) += (yysemantic_stack_[(3) - (2)].values); -+ if( (yysemantic_stack_[(3) - (2)].indent) != "" && (yyval.indent) == "" ) -+ (yyval.indent) = (yysemantic_stack_[(3) - (2)].indent); -+ (yyval.node) = (yysemantic_stack_[(3) - (3)].node); - ;} - break; - - case 13: --#line 193 "qmake.yy" -+#line 204 "qmake.yy" - { - (yyval.values).clear(); - (yyval.indent) = ""; -@@ -1585,77 +471,77 @@ - break; - - case 14: --#line 200 "qmake.yy" -- { (yyval.values).append( (yyvsp[(2) - (2)].value) ); ;} -+#line 211 "qmake.yy" -+ { (yyval.values).append( (yysemantic_stack_[(2) - (2)].value) ); ;} - break; - - case 15: --#line 201 "qmake.yy" -- { (yyval.values).append( (yyvsp[(1) - (1)].value) ); ;} -+#line 212 "qmake.yy" -+ { (yyval.values).append( (yysemantic_stack_[(1) - (1)].value) ); ;} - break; - - case 16: --#line 202 "qmake.yy" -+#line 213 "qmake.yy" - { (yyval.values).append("\\\n"); ;} - break; - - case 17: --#line 203 "qmake.yy" -+#line 214 "qmake.yy" - { (yyval.values).append("\n"); ;} - break; - - case 18: --#line 204 "qmake.yy" -- { (yyval.values).append((yyvsp[(1) - (1)].value)); ;} -+#line 215 "qmake.yy" -+ { (yyval.values).append((yysemantic_stack_[(1) - (1)].value)); ;} - break; - - case 19: --#line 206 "qmake.yy" -+#line 217 "qmake.yy" - { -- (yyval.values).append((yyvsp[(1) - (1)].value)); -- if( (yyval.indent) == "" && (yyvsp[(1) - (1)].value) != "" ) -- (yyval.indent) = (yyvsp[(1) - (1)].value); -+ (yyval.values).append((yysemantic_stack_[(1) - (1)].value)); -+ if( (yyval.indent) == "" && (yysemantic_stack_[(1) - (1)].value) != "" ) -+ (yyval.indent) = (yysemantic_stack_[(1) - (1)].value); - ;} - break; - - case 22: --#line 216 "qmake.yy" -+#line 227 "qmake.yy" - { - CommentAST* node = new CommentAST(); -- node->comment = (yyvsp[(1) - (1)].value) + "\n"; -+ node->comment = (yysemantic_stack_[(1) - (1)].value) + "\n"; - (yyval.node) = node; - ;} - break; - - case 23: --#line 222 "qmake.yy" -+#line 233 "qmake.yy" - { - (yyval.node) = 0; - ;} - break; - - case 24: --#line 227 "qmake.yy" -- { (yyval.value) = (yyvsp[(1) - (1)].value); ;} -+#line 238 "qmake.yy" -+ { (yyval.value) = (yysemantic_stack_[(1) - (1)].value); ;} - break; - - case 25: --#line 228 "qmake.yy" -- { (yyval.value) = (yyvsp[(1) - (1)].value); ;} -+#line 239 "qmake.yy" -+ { (yyval.value) = (yysemantic_stack_[(1) - (1)].value); ;} - break; - - case 31: --#line 235 "qmake.yy" -+#line 246 "qmake.yy" - { - ProjectAST *projectAST = new ProjectAST(ProjectAST::Scope); - projects.push(projectAST); -- projects.top()->scopedID = (yyvsp[(1) - (1)].value); -+ projects.top()->scopedID = (yysemantic_stack_[(1) - (1)].value); - depth++; - ;} - break; - - case 32: --#line 242 "qmake.yy" -+#line 253 "qmake.yy" - { - (yyval.node) = projects.pop(); - depth--; -@@ -1663,19 +549,19 @@ - break; - - case 33: --#line 249 "qmake.yy" -+#line 260 "qmake.yy" - { - ProjectAST *projectAST = new ProjectAST(ProjectAST::FunctionScope); - projects.push(projectAST); -- projects.top()->scopedID = (yyvsp[(1) - (4)].value); -- projects.top()->args = (yyvsp[(3) - (4)].value); -+ projects.top()->scopedID = (yysemantic_stack_[(4) - (1)].value); -+ projects.top()->args = (yysemantic_stack_[(4) - (3)].value); - depth++; - - //qWarning("%s", $<value>1.ascii()); -- if ((yyvsp[(1) - (4)].value).contains("include")) -+ if ((yysemantic_stack_[(4) - (1)].value).contains("include")) - { - IncludeAST *includeAST = new IncludeAST(); -- includeAST->projectName = (yyvsp[(3) - (4)].value); -+ includeAST->projectName = (yysemantic_stack_[(4) - (3)].value); - projects.top()->addChildAST(includeAST); - includeAST->setDepth(depth); - } -@@ -1683,7 +569,7 @@ - break; - - case 34: --#line 267 "qmake.yy" -+#line 278 "qmake.yy" - { - (yyval.node) = projects.pop(); - depth--; -@@ -1691,25 +577,25 @@ - break; - - case 35: --#line 273 "qmake.yy" -- { (yyval.value) = (yyvsp[(1) - (1)].value); ;} -+#line 284 "qmake.yy" -+ { (yyval.value) = (yysemantic_stack_[(1) - (1)].value); ;} - break; - - case 36: --#line 274 "qmake.yy" -+#line 285 "qmake.yy" - { (yyval.value) = ""; ;} - break; - - case 38: --#line 279 "qmake.yy" -+#line 290 "qmake.yy" - { -- projects.top()->addChildAST((yyvsp[(2) - (2)].node)); -- (yyvsp[(2) - (2)].node)->setDepth(depth); -+ projects.top()->addChildAST((yysemantic_stack_[(2) - (2)].node)); -+ (yysemantic_stack_[(2) - (2)].node)->setDepth(depth); - ;} - break; - - case 40: --#line 287 "qmake.yy" -+#line 298 "qmake.yy" - { - ProjectAST *projectAST = new ProjectAST(ProjectAST::FunctionScope); - projects.push(projectAST); -@@ -1720,7 +606,7 @@ - break; - - case 41: --#line 295 "qmake.yy" -+#line 306 "qmake.yy" - { - (yyval.node) = projects.pop(); - depth--; -@@ -1728,239 +614,499 @@ - break; - - case 42: --#line 300 "qmake.yy" -+#line 311 "qmake.yy" - { - (yyval.node) = new ProjectAST(); - ;} - break; - - case 43: --#line 306 "qmake.yy" -+#line 317 "qmake.yy" - { - CommentAST *node = new CommentAST(); -- node->comment = (yyvsp[(1) - (2)].value) + "\n"; -+ node->comment = (yysemantic_stack_[(2) - (1)].value) + "\n"; - (yyval.node) = node; - ;} - break; - - --/* Line 1267 of yacc.c. */ --#line 1749 "qmake_yacc.cpp" -- default: break; -- } -- YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); -- -- YYPOPSTACK (yylen); -- yylen = 0; -- YY_STACK_PRINT (yyss, yyssp); -- -- *++yyvsp = yyval; -- -- -- /* Now `shift' the result of the reduction. Determine what state -- that goes to, based on the state we popped back to and the rule -- number reduced by. */ -- -- yyn = yyr1[yyn]; -- -- yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; -- if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) -- yystate = yytable[yystate]; -- else -- yystate = yydefgoto[yyn - YYNTOKENS]; -- -- goto yynewstate; -+ /* Line 675 of lalr1.cc. */ -+#line 635 "qmake_yacc.cpp" -+ default: break; -+ } -+ YY_SYMBOL_PRINT ("-> $$ =", yyr1_[yyn], &yyval, &yyloc); - -+ yypop_ (yylen); -+ yylen = 0; -+ YY_STACK_PRINT (); -+ -+ yysemantic_stack_.push (yyval); -+ yylocation_stack_.push (yyloc); -+ -+ /* Shift the result of the reduction. */ -+ yyn = yyr1_[yyn]; -+ yystate = yypgoto_[yyn - yyntokens_] + yystate_stack_[0]; -+ if (0 <= yystate && yystate <= yylast_ -+ && yycheck_[yystate] == yystate_stack_[0]) -+ yystate = yytable_[yystate]; -+ else -+ yystate = yydefgoto_[yyn - yyntokens_]; -+ goto yynewstate; -+ -+ /*------------------------------------. -+ | yyerrlab -- here on detecting error | -+ `------------------------------------*/ -+ yyerrlab: -+ /* If not already recovering from an error, report this error. */ -+ if (!yyerrstatus_) -+ { -+ ++yynerrs_; -+ error (yylloc, yysyntax_error_ (yystate)); -+ } - --/*------------------------------------. --| yyerrlab -- here on detecting error | --`------------------------------------*/ --yyerrlab: -- /* If not already recovering from an error, report this error. */ -- if (!yyerrstatus) -- { -- ++yynerrs; --#if ! YYERROR_VERBOSE -- yyerror (YY_("syntax error")); --#else -+ yyerror_range[0] = yylloc; -+ if (yyerrstatus_ == 3) - { -- YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); -- if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) -- { -- YYSIZE_T yyalloc = 2 * yysize; -- if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) -- yyalloc = YYSTACK_ALLOC_MAXIMUM; -- if (yymsg != yymsgbuf) -- YYSTACK_FREE (yymsg); -- yymsg = (char *) YYSTACK_ALLOC (yyalloc); -- if (yymsg) -- yymsg_alloc = yyalloc; -- else -- { -- yymsg = yymsgbuf; -- yymsg_alloc = sizeof yymsgbuf; -- } -- } -+ /* If just tried and failed to reuse look-ahead token after an -+ error, discard it. */ - -- if (0 < yysize && yysize <= yymsg_alloc) -+ if (yychar <= yyeof_) - { -- (void) yysyntax_error (yymsg, yystate, yychar); -- yyerror (yymsg); -+ /* Return failure if at end of input. */ -+ if (yychar == yyeof_) -+ YYABORT; - } - else - { -- yyerror (YY_("syntax error")); -- if (yysize != 0) -- goto yyexhaustedlab; -+ yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc); -+ yychar = yyempty_; - } - } --#endif -- } -- -- -- -- if (yyerrstatus == 3) -- { -- /* If just tried and failed to reuse look-ahead token after an -- error, discard it. */ -- -- if (yychar <= YYEOF) -- { -- /* Return failure if at end of input. */ -- if (yychar == YYEOF) -- YYABORT; -- } -- else -- { -- yydestruct ("Error: discarding", -- yytoken, &yylval); -- yychar = YYEMPTY; -- } -- } - -- /* Else will try to reuse look-ahead token after shifting the error -- token. */ -- goto yyerrlab1; -- -- --/*---------------------------------------------------. --| yyerrorlab -- error raised explicitly by YYERROR. | --`---------------------------------------------------*/ --yyerrorlab: -- -- /* Pacify compilers like GCC when the user code never invokes -- YYERROR and the label yyerrorlab therefore never appears in user -- code. */ -- if (/*CONSTCOND*/ 0) -- goto yyerrorlab; -- -- /* Do not reclaim the symbols of the rule which action triggered -- this YYERROR. */ -- YYPOPSTACK (yylen); -- yylen = 0; -- YY_STACK_PRINT (yyss, yyssp); -- yystate = *yyssp; -- goto yyerrlab1; -- -- --/*-------------------------------------------------------------. --| yyerrlab1 -- common code for both syntax error and YYERROR. | --`-------------------------------------------------------------*/ --yyerrlab1: -- yyerrstatus = 3; /* Each real token shifted decrements this. */ -+ /* Else will try to reuse look-ahead token after shifting the error -+ token. */ -+ goto yyerrlab1; -+ -+ -+ /*---------------------------------------------------. -+ | yyerrorlab -- error raised explicitly by YYERROR. | -+ `---------------------------------------------------*/ -+ yyerrorlab: -+ -+ /* Pacify compilers like GCC when the user code never invokes -+ YYERROR and the label yyerrorlab therefore never appears in user -+ code. */ -+ if (false) -+ goto yyerrorlab; -+ -+ yyerror_range[0] = yylocation_stack_[yylen - 1]; -+ /* Do not reclaim the symbols of the rule which action triggered -+ this YYERROR. */ -+ yypop_ (yylen); -+ yylen = 0; -+ yystate = yystate_stack_[0]; -+ goto yyerrlab1; -+ -+ /*-------------------------------------------------------------. -+ | yyerrlab1 -- common code for both syntax error and YYERROR. | -+ `-------------------------------------------------------------*/ -+ yyerrlab1: -+ yyerrstatus_ = 3; /* Each real token shifted decrements this. */ - -- for (;;) -- { -- yyn = yypact[yystate]; -- if (yyn != YYPACT_NINF) -+ for (;;) -+ { -+ yyn = yypact_[yystate]; -+ if (yyn != yypact_ninf_) - { -- yyn += YYTERROR; -- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) -+ yyn += yyterror_; -+ if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_) - { -- yyn = yytable[yyn]; -+ yyn = yytable_[yyn]; - if (0 < yyn) - break; - } - } - -- /* Pop the current state because it cannot handle the error token. */ -- if (yyssp == yyss) -+ /* Pop the current state because it cannot handle the error token. */ -+ if (yystate_stack_.height () == 1) - YYABORT; - -+ yyerror_range[0] = yylocation_stack_[0]; -+ yydestruct_ ("Error: popping", -+ yystos_[yystate], -+ &yysemantic_stack_[0], &yylocation_stack_[0]); -+ yypop_ (); -+ yystate = yystate_stack_[0]; -+ YY_STACK_PRINT (); -+ } -+ -+ if (yyn == yyfinal_) -+ goto yyacceptlab; - -- yydestruct ("Error: popping", -- yystos[yystate], yyvsp); -- YYPOPSTACK (1); -- yystate = *yyssp; -- YY_STACK_PRINT (yyss, yyssp); -- } -+ yyerror_range[1] = yylloc; -+ // Using YYLLOC is tempting, but would change the location of -+ // the look-ahead. YYLOC is available though. -+ YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2); -+ yysemantic_stack_.push (yylval); -+ yylocation_stack_.push (yyloc); -+ -+ /* Shift the error token. */ -+ YY_SYMBOL_PRINT ("Shifting", yystos_[yyn], -+ &yysemantic_stack_[0], &yylocation_stack_[0]); -+ -+ yystate = yyn; -+ goto yynewstate; -+ -+ /* Accept. */ -+ yyacceptlab: -+ yyresult = 0; -+ goto yyreturn; -+ -+ /* Abort. */ -+ yyabortlab: -+ yyresult = 1; -+ goto yyreturn; -+ -+ yyreturn: -+ if (yychar != yyeof_ && yychar != yyempty_) -+ yydestruct_ ("Cleanup: discarding lookahead", yytoken, &yylval, &yylloc); -+ -+ /* Do not reclaim the symbols of the rule which action triggered -+ this YYABORT or YYACCEPT. */ -+ yypop_ (yylen); -+ while (yystate_stack_.height () != 1) -+ { -+ yydestruct_ ("Cleanup: popping", -+ yystos_[yystate_stack_[0]], -+ &yysemantic_stack_[0], -+ &yylocation_stack_[0]); -+ yypop_ (); -+ } -+ -+ return yyresult; -+ } -+ -+ // Generate an error message. -+ std::string -+ Parser::yysyntax_error_ (int yystate) -+ { -+ std::string res; -+ YYUSE (yystate); -+#if YYERROR_VERBOSE -+ int yyn = yypact_[yystate]; -+ if (yypact_ninf_ < yyn && yyn <= yylast_) -+ { -+ /* Start YYX at -YYN if negative to avoid negative indexes in -+ YYCHECK. */ -+ int yyxbegin = yyn < 0 ? -yyn : 0; -+ -+ /* Stay within bounds of both yycheck and yytname. */ -+ int yychecklim = yylast_ - yyn + 1; -+ int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_; -+ int count = 0; -+ for (int x = yyxbegin; x < yyxend; ++x) -+ if (yycheck_[x + yyn] == x && x != yyterror_) -+ ++count; -+ -+ // FIXME: This method of building the message is not compatible -+ // with internationalization. It should work like yacc.c does it. -+ // That is, first build a string that looks like this: -+ // "syntax error, unexpected %s or %s or %s" -+ // Then, invoke YY_ on this string. -+ // Finally, use the string as a format to output -+ // yytname_[tok], etc. -+ // Until this gets fixed, this message appears in English only. -+ res = "syntax error, unexpected "; -+ res += yytnamerr_ (yytname_[tok]); -+ if (count < 5) -+ { -+ count = 0; -+ for (int x = yyxbegin; x < yyxend; ++x) -+ if (yycheck_[x + yyn] == x && x != yyterror_) -+ { -+ res += (!count++) ? ", expecting " : " or "; -+ res += yytnamerr_ (yytname_[x]); -+ } -+ } -+ } -+ else -+#endif -+ res = YY_("syntax error"); -+ return res; -+ } - -- if (yyn == YYFINAL) -- YYACCEPT; - -- *++yyvsp = yylval; -+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing -+ STATE-NUM. */ -+ const signed char Parser::yypact_ninf_ = -41; -+ const signed char -+ Parser::yypact_[] = -+ { -+ -41, 1, -41, -41, 5, 18, -41, -9, -41, -41, -+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -14, -+ -41, -2, -41, -41, 21, -10, 5, -41, -41, -41, -+ -41, -41, -41, -41, -41, -41, -41, -41, 7, -41, -+ -41, 4, -2, -41, -41, -41, -41, 6, 15, -41, -+ -41, -2, 17, -41 -+ }; -+ -+ /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE -+ doesn't specify something else to do. Zero means the default is an -+ error. */ -+ const unsigned char -+ Parser::yydefact_[] = -+ { -+ 2, 0, 5, 1, 3, 31, 44, 0, 4, 6, -+ 7, 8, 9, 10, 26, 27, 28, 29, 30, 36, -+ 13, 39, 43, 35, 0, 11, 0, 5, 32, 33, -+ 21, 17, 16, 20, 25, 24, 19, 18, 23, 15, -+ 38, 0, 39, 22, 12, 14, 37, 42, 0, 34, -+ 40, 39, 0, 41 -+ }; - -+ /* YYPGOTO[NTERM-NUM]. */ -+ const signed char -+ Parser::yypgoto_[] = -+ { -+ -41, -41, -41, 8, 10, -41, -41, -41, -41, -1, -+ -41, -41, -41, -41, -41, -41, -40, -41, -41, -41, -+ -41 -+ }; - -- /* Shift the error token. */ -- YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); -+ /* YYDEFGOTO[NTERM-NUM]. */ -+ const signed char -+ Parser::yydefgoto_[] = -+ { -+ -1, 1, 2, 4, 8, 9, 25, 38, 44, 39, -+ 20, 10, 21, 11, 42, 24, 28, 49, 51, 12, -+ 13 -+ }; - -- yystate = yyn; -- goto yynewstate; -- -- --/*-------------------------------------. --| yyacceptlab -- YYACCEPT comes here. | --`-------------------------------------*/ --yyacceptlab: -- yyresult = 0; -- goto yyreturn; -- --/*-----------------------------------. --| yyabortlab -- YYABORT comes here. | --`-----------------------------------*/ --yyabortlab: -- yyresult = 1; -- goto yyreturn; -- --#ifndef yyoverflow --/*-------------------------------------------------. --| yyexhaustedlab -- memory exhaustion comes here. | --`-------------------------------------------------*/ --yyexhaustedlab: -- yyerror (YY_("memory exhausted")); -- yyresult = 2; -- /* Fall through. */ --#endif -+ /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If -+ positive, shift that token. If negative, reduce the rule which -+ number is the opposite. If zero, do what YYDEFACT says. */ -+ const signed char Parser::yytable_ninf_ = -1; -+ const unsigned char -+ Parser::yytable_[] = -+ { -+ 30, 3, 47, 31, 22, 23, 32, 5, 5, 26, -+ 33, 52, 34, 35, 36, 37, 27, 6, 6, 7, -+ 7, 46, 14, 15, 16, 17, 18, 19, 43, 34, -+ 35, 29, 48, 50, 53, 41, 40, 45 -+ }; - --yyreturn: -- if (yychar != YYEOF && yychar != YYEMPTY) -- yydestruct ("Cleanup: discarding lookahead", -- yytoken, &yylval); -- /* Do not reclaim the symbols of the rule which action triggered -- this YYABORT or YYACCEPT. */ -- YYPOPSTACK (yylen); -- YY_STACK_PRINT (yyss, yyssp); -- while (yyssp != yyss) -- { -- yydestruct ("Cleanup: popping", -- yystos[*yyssp], yyvsp); -- YYPOPSTACK (1); -- } --#ifndef yyoverflow -- if (yyss != yyssa) -- YYSTACK_FREE (yyss); -+ /* YYCHECK. */ -+ const unsigned char -+ Parser::yycheck_[] = -+ { -+ 10, 0, 42, 13, 13, 19, 16, 3, 3, 11, -+ 20, 51, 22, 23, 24, 25, 18, 13, 13, 15, -+ 15, 17, 4, 5, 6, 7, 8, 9, 21, 22, -+ 23, 10, 26, 18, 17, 27, 26, 38 -+ }; -+ -+ /* STOS_[STATE-NUM] -- The (internal number of the) accessing -+ symbol of state STATE-NUM. */ -+ const unsigned char -+ Parser::yystos_[] = -+ { -+ 0, 28, 29, 0, 30, 3, 13, 15, 31, 32, -+ 38, 40, 46, 47, 4, 5, 6, 7, 8, 9, -+ 37, 39, 13, 19, 42, 33, 11, 18, 43, 10, -+ 10, 13, 16, 20, 22, 23, 24, 25, 34, 36, -+ 31, 30, 41, 21, 35, 36, 17, 43, 26, 44, -+ 18, 45, 43, 17 -+ }; -+ -+#if YYDEBUG -+ /* TOKEN_NUMBER_[YYLEX-NUM] -- Internal symbol number corresponding -+ to YYLEX-NUM. */ -+ const unsigned short int -+ Parser::yytoken_number_[] = -+ { -+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, -+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, -+ 275, 276, 277, 278, 279, 280, 281 -+ }; - #endif --#if YYERROR_VERBOSE -- if (yymsg != yymsgbuf) -- YYSTACK_FREE (yymsg); -+ -+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -+ const unsigned char -+ Parser::yyr1_[] = -+ { -+ 0, 27, 29, 28, 30, 30, 31, 31, 31, 31, -+ 31, 32, 33, 33, 34, 34, 34, 34, 34, 34, -+ 34, 34, 35, 35, 36, 36, 37, 37, 37, 37, -+ 37, 39, 38, 41, 40, 42, 42, 43, 43, 43, -+ 45, 44, 44, 46, 47 -+ }; -+ -+ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -+ const unsigned char -+ Parser::yyr2_[] = -+ { -+ 0, 2, 0, 2, 2, 0, 1, 1, 1, 1, -+ 1, 3, 3, 0, 2, 1, 1, 1, 1, 1, -+ 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, -+ 1, 0, 3, 0, 7, 1, 0, 3, 2, 0, -+ 0, 5, 0, 2, 1 -+ }; -+ -+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE -+ /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. -+ First, the terminals, then, starting at \a yyntokens_, nonterminals. */ -+ const char* -+ const Parser::yytname_[] = -+ { -+ "$end", "error", "$undefined", "ID_SIMPLE", "EQ", "PLUSEQ", "MINUSEQ", -+ "STAREQ", "TILDEEQ", "LBRACE", "RBRACE", "COLON", "NUMSIGN", "NEWLINE", -+ "NUMBER", "COMMENT", "CONT", "RCURLY", "LCURLY", "ID_ARGS", -+ "LIST_COMMENT", "LIST_COMMENT_WITHOUT_NEWLINE", "QUOTED_VARIABLE_VALUE", -+ "VARIABLE_VALUE", "INDENT", "LIST_WS", "\"else\"", "$accept", "project", -+ "@1", "statements", "statement", "variable_assignment", -+ "multiline_values", "line_body", "opt_comment", "variable_value", -+ "operator", "scope", "@2", "function_call", "@3", "function_args", -+ "scope_body", "else_statement", "@4", "comment", "emptyline", 0 -+ }; - #endif -- /* Make sure YYID is used. */ -- return YYID (yyresult); --} - -+#if YYDEBUG -+ /* YYRHS -- A `-1'-separated list of the rules' RHS. */ -+ const Parser::rhs_number_type -+ Parser::yyrhs_[] = -+ { -+ 28, 0, -1, -1, 29, 30, -1, 30, 31, -1, -+ -1, 32, -1, 38, -1, 40, -1, 46, -1, 47, -+ -1, 3, 37, 33, -1, 33, 34, 35, -1, -1, -+ 34, 36, -1, 36, -1, 16, -1, 13, -1, 25, -+ -1, 24, -1, 20, -1, 10, -1, 21, -1, -1, -+ 23, -1, 22, -1, 4, -1, 5, -1, 6, -1, -+ 7, -1, 8, -1, -1, 3, 39, 43, -1, -1, -+ 3, 9, 42, 10, 41, 43, 44, -1, 19, -1, -+ -1, 18, 30, 17, -1, 11, 31, -1, -1, -1, -+ 26, 18, 45, 43, 17, -1, -1, 15, 13, -1, -+ 13, -1 -+ }; -+ -+ /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in -+ YYRHS. */ -+ const unsigned char -+ Parser::yyprhs_[] = -+ { -+ 0, 0, 3, 4, 7, 10, 11, 13, 15, 17, -+ 19, 21, 25, 29, 30, 33, 35, 37, 39, 41, -+ 43, 45, 47, 49, 50, 52, 54, 56, 58, 60, -+ 62, 64, 65, 69, 70, 78, 80, 81, 85, 88, -+ 89, 90, 96, 97, 100 -+ }; -+ -+ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -+ const unsigned short int -+ Parser::yyrline_[] = -+ { -+ 0, 147, 147, 147, 154, 159, 162, 166, 170, 174, -+ 178, 184, 196, 204, 211, 212, 213, 214, 215, 216, -+ 222, 223, 226, 233, 238, 239, 242, 242, 242, 242, -+ 242, 246, 245, 260, 259, 284, 285, 288, 289, 294, -+ 298, 297, 311, 316, 324 -+ }; -+ -+ // Print the state stack on the debug stream. -+ void -+ Parser::yystack_print_ () -+ { -+ *yycdebug_ << "Stack now"; -+ for (state_stack_type::const_iterator i = yystate_stack_.begin (); -+ i != yystate_stack_.end (); ++i) -+ *yycdebug_ << ' ' << *i; -+ *yycdebug_ << std::endl; -+ } -+ -+ // Report on the debug stream that the rule \a yyrule is going to be reduced. -+ void -+ Parser::yy_reduce_print_ (int yyrule) -+ { -+ unsigned int yylno = yyrline_[yyrule]; -+ int yynrhs = yyr2_[yyrule]; -+ /* Print the symbols being reduced, and their result. */ -+ *yycdebug_ << "Reducing stack by rule " << yyrule - 1 -+ << " (line " << yylno << "), "; -+ /* The symbols being reduced. */ -+ for (int yyi = 0; yyi < yynrhs; yyi++) -+ YY_SYMBOL_PRINT (" $" << yyi + 1 << " =", -+ yyrhs_[yyprhs_[yyrule] + yyi], -+ &(yysemantic_stack_[(yynrhs) - (yyi + 1)]), -+ &(yylocation_stack_[(yynrhs) - (yyi + 1)])); -+ } -+#endif // YYDEBUG -+ -+ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -+ Parser::token_number_type -+ Parser::yytranslate_ (int t) -+ { -+ static -+ const token_number_type -+ translate_table[] = -+ { -+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, -+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, -+ 25, 26 -+ }; -+ if ((unsigned int) t <= yyuser_token_number_max_) -+ return translate_table[t]; -+ else -+ return yyundef_token_; -+ } -+ -+ const int Parser::yyeof_ = 0; -+ const int Parser::yylast_ = 37; -+ const int Parser::yynnts_ = 21; -+ const int Parser::yyempty_ = -2; -+ const int Parser::yyfinal_ = 3; -+ const int Parser::yyterror_ = 1; -+ const int Parser::yyerrcode_ = 256; -+ const int Parser::yyntokens_ = 27; -+ -+ const unsigned int Parser::yyuser_token_number_max_ = 281; -+ const Parser::token_number_type Parser::yyundef_token_ = 2; -+ -+} // namespace QMake -+ -+#line 327 "qmake.yy" - --#line 316 "qmake.yy" - - --#include "qmake_lex.cpp" -+namespace QMake -+{ -+ void Parser::error(const location_type& /*l*/, const std::string& m) -+ { -+ std::cerr << m << std::endl; -+ } -+} - -diff -u --exclude=.svn -Nur kdev_3.4.0.org/buildtools/lib/parsers/qmake/qmake_yacc.h kdev_3.4.0/buildtools/lib/parsers/qmake/qmake_yacc.h ---- buildtools/lib/parsers/qmake/qmake_yacc.h 2007-02-07 21:15:37.000000000 +0100 -+++ buildtools/lib/parsers/qmake/qmake_yacc.h 1970-01-01 01:00:00.000000000 +0100 -@@ -1,103 +0,0 @@ --/* A Bison parser, made by GNU Bison 2.3. */ -- --/* Skeleton interface for Bison's Yacc-like parsers in C -- -- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 -- Free Software Foundation, Inc. -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -- any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin Street, Fifth Floor, -- Boston, MA 02110-1301, USA. */ -- --/* As a special exception, you may create a larger work that contains -- part or all of the Bison parser skeleton and distribute that work -- under terms of your choice, so long as that work isn't itself a -- parser generator using the skeleton or a modified version thereof -- as a parser skeleton. Alternatively, if you modify or redistribute -- the parser skeleton itself, you may (at your option) remove this -- special exception, which will cause the skeleton and the resulting -- Bison output files to be licensed under the GNU General Public -- License without this special exception. -- -- This special exception was added by the Free Software Foundation in -- version 2.2 of Bison. */ -- --/* Tokens. */ --#ifndef YYTOKENTYPE --# define YYTOKENTYPE -- /* Put the tokens into the symbol table, so that GDB and other debuggers -- know about them. */ -- enum yytokentype { -- ID_SIMPLE = 258, -- EQ = 259, -- PLUSEQ = 260, -- MINUSQE = 261, -- STAREQ = 262, -- TILDEEQ = 263, -- LBRACE = 264, -- RBRACE = 265, -- COLON = 266, -- NUMSIGN = 267, -- NEWLINE = 268, -- NUMBER = 269, -- COMMENT = 270, -- CONT = 271, -- RCURLY = 272, -- LCURLY = 273, -- ID_ARGS = 274, -- LIST_COMMENT = 275, -- LIST_COMMENT_WITHOUT_NEWLINE = 276, -- QUOTED_VARIABLE_VALUE = 277, -- VARIABLE_VALUE = 278, -- INDENT = 279, -- LIST_WS = 280 -- }; --#endif --/* Tokens. */ --#define ID_SIMPLE 258 --#define EQ 259 --#define PLUSEQ 260 --#define MINUSQE 261 --#define STAREQ 262 --#define TILDEEQ 263 --#define LBRACE 264 --#define RBRACE 265 --#define COLON 266 --#define NUMSIGN 267 --#define NEWLINE 268 --#define NUMBER 269 --#define COMMENT 270 --#define CONT 271 --#define RCURLY 272 --#define LCURLY 273 --#define ID_ARGS 274 --#define LIST_COMMENT 275 --#define LIST_COMMENT_WITHOUT_NEWLINE 276 --#define QUOTED_VARIABLE_VALUE 277 --#define VARIABLE_VALUE 278 --#define INDENT 279 --#define LIST_WS 280 -- -- -- -- --#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED --typedef int YYSTYPE; --# define yystype YYSTYPE /* obsolescent; will be withdrawn */ --# define YYSTYPE_IS_DECLARED 1 --# define YYSTYPE_IS_TRIVIAL 1 --#endif -- --extern YYSTYPE yylval; -- -diff -u --exclude=.svn -Nur kdev_3.4.0.org/buildtools/lib/parsers/qmake/qmake_yacc.hpp kdev_3.4.0/buildtools/lib/parsers/qmake/qmake_yacc.hpp ---- buildtools/lib/parsers/qmake/qmake_yacc.hpp 1970-01-01 01:00:00.000000000 +0100 -+++ buildtools/lib/parsers/qmake/qmake_yacc.hpp 2007-02-07 20:35:10.000000000 +0100 -@@ -0,0 +1,421 @@ -+/* A Bison parser, made by GNU Bison 2.3. */ -+ -+/* Skeleton interface for Bison LALR(1) parsers in C++ -+ -+ Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2, or (at your option) -+ any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin Street, Fifth Floor, -+ Boston, MA 02110-1301, USA. */ -+ -+/* As a special exception, you may create a larger work that contains -+ part or all of the Bison parser skeleton and distribute that work -+ under terms of your choice, so long as that work isn't itself a -+ parser generator using the skeleton or a modified version thereof -+ as a parser skeleton. Alternatively, if you modify or redistribute -+ the parser skeleton itself, you may (at your option) remove this -+ special exception, which will cause the skeleton and the resulting -+ Bison output files to be licensed under the GNU General Public -+ License without this special exception. -+ -+ This special exception was added by the Free Software Foundation in -+ version 2.2 of Bison. */ -+ -+/* C++ LALR(1) parser skeleton written by Akim Demaille. */ -+ -+#ifndef PARSER_HEADER_H -+# define PARSER_HEADER_H -+ -+#include <string> -+#include <iostream> -+#include "stack.hh" -+ -+namespace QMake -+{ -+ class position; -+ class location; -+} -+ -+/* First part of user declarations. */ -+#line 1 "qmake.yy" -+ -+/*************************************************************************** -+ * Copyright (C) 2005 by Alexander Dymo * -+ * adymo@kdevelop.org * -+ * Copyright (C) 2006 by Andreas Pakulat * -+ * apaku@gmx.de * -+ * * -+ * This program is free software; you can redistribute it and/or modify * -+ * it under the terms of the GNU Library General Public License as * -+ * published by the Free Software Foundation; either version 2 of the * -+ * License, or (at your option) any later version. * -+ * * -+ * This program is distributed in the hope that it will be useful, * -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of * -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -+ * GNU General Public License for more details. * -+ * * -+ * You should have received a copy of the GNU Library General Public * -+ * License along with this program; if not, write to the * -+ * Free Software Foundation, Inc., * -+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * -+ ***************************************************************************/ -+ -+/** -+@file qmake.yy -+QMake Parser -+ -+Simple LALR parser which builds the syntax tree (see @ref QMake::AST). -+ -+@todo Recognize comments after statements like: -+SOURCES = foo #regognize me -+ -+@fixme Parser fails on files that do not end with a newline -+@fixme 1 shift/reduce conflict in "line_body" rule -+*/ -+ -+#include <qvaluestack.h> -+#include "qmakeast.h" -+#include <qregexp.h> -+ -+#define YYSTYPE_IS_DECLARED -+ -+namespace QMake -+{ -+ class Lexer; -+ -+/** -+The yylval type. -+*/ -+struct Result { -+ Result(): node(0) {} -+ -+ /**Type of semantic value for simple grammar rules.*/ -+ QString value; -+ /**Type of semantic value for grammar rules which are parts of AST.*/ -+ AST *node; -+ /**Type of semantic value for "multiline_values" grammar rule. -+ Each line of multiline value is stored as a string in the list. -+ -+ For example we have in .pro file: -+ @code -+ SOURCE = foo1.cpp \ -+ foo2.cpp \ -+ foo3.cpp foo4.cpp -+ @endcode -+ The string list will be populated with three strings: -+ <pre> -+ foo1.cpp -+ foo2.cpp -+ foo3.cpp foo4.cpp -+ </pre> -+ */ -+ QStringList values; -+ QString indent; -+}; -+ -+#define YYSTYPE Result -+typedef Result YYSTYPE; -+} -+ -+extern int QMakelex( QMake::Result* yylval, QMake::Lexer* lexer ); -+ -+/** -+The stack to store ProjectAST pointers when a new child -+ProjectAST is created and filled with statements. -+ -+Parser creates root ProjectAST for a .pro file, pushes it onto the stack and starts -+adding statements. Each statement is added as a child StatementAST to the ProjectAST -+currently on the top in the stack. -+ -+When a scope or function scope statement is parsed, the child ProjectAST is created -+and pushed onto the stack. Therefore all statements which belong to the scope -+or function scope are added as childs to their direct parent (scope or function scope). -+*/ -+//QValueStack<ProjectAST*> projects; -+ -+/** -+The current depth of AST node is stored here. -+AST depth is important to know because automatic indentation can -+be easily implemented (the parser itself looses all information -+about indentation). -+*/ -+// int depth = 0; -+ -+/* -+To debug this parser, put the line below into the next bison file section. -+Don't forget to uncomment "yydebug = 1" line in qmakedriver.cpp. -+%debug -+*/ -+ -+ -+/* Line 35 of lalr1.cc. */ -+#line 165 "qmake_yacc.hpp" -+ -+#include "location.hh" -+ -+/* Enabling traces. */ -+#ifndef YYDEBUG -+# define YYDEBUG 0 -+#endif -+ -+/* Enabling verbose error messages. */ -+#ifdef YYERROR_VERBOSE -+# undef YYERROR_VERBOSE -+# define YYERROR_VERBOSE 1 -+#else -+# define YYERROR_VERBOSE 0 -+#endif -+ -+/* Enabling the token table. */ -+#ifndef YYTOKEN_TABLE -+# define YYTOKEN_TABLE 0 -+#endif -+ -+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. -+ If N is 0, then set CURRENT to the empty location which ends -+ the previous symbol: RHS[0] (always defined). */ -+ -+#ifndef YYLLOC_DEFAULT -+# define YYLLOC_DEFAULT(Current, Rhs, N) \ -+do { \ -+ if (N) \ -+ { \ -+ (Current).begin = (Rhs)[1].begin; \ -+ (Current).end = (Rhs)[N].end; \ -+ } \ -+ else \ -+ { \ -+ (Current).begin = (Current).end = (Rhs)[0].end; \ -+ } \ -+} while (false) -+#endif -+ -+namespace QMake -+{ -+ -+ /// A Bison parser. -+ class Parser -+ { -+ public: -+ /// Symbol semantic values. -+#ifndef YYSTYPE -+ typedef int semantic_type; -+#else -+ typedef YYSTYPE semantic_type; -+#endif -+ /// Symbol locations. -+ typedef location location_type; -+ /// Tokens. -+ struct token -+ { -+ /* Tokens. */ -+ enum yytokentype { -+ ID_SIMPLE = 258, -+ EQ = 259, -+ PLUSEQ = 260, -+ MINUSEQ = 261, -+ STAREQ = 262, -+ TILDEEQ = 263, -+ LBRACE = 264, -+ RBRACE = 265, -+ COLON = 266, -+ NUMSIGN = 267, -+ NEWLINE = 268, -+ NUMBER = 269, -+ COMMENT = 270, -+ CONT = 271, -+ RCURLY = 272, -+ LCURLY = 273, -+ ID_ARGS = 274, -+ LIST_COMMENT = 275, -+ LIST_COMMENT_WITHOUT_NEWLINE = 276, -+ QUOTED_VARIABLE_VALUE = 277, -+ VARIABLE_VALUE = 278, -+ INDENT = 279, -+ LIST_WS = 280 -+ }; -+ -+ }; -+ /// Token type. -+ typedef token::yytokentype token_type; -+ -+ /// Build a parser object. -+ Parser (QMake::Lexer* lexer_yyarg, QValueStack<ProjectAST*>& projects_yyarg, int depth_yyarg); -+ virtual ~Parser (); -+ -+ /// Parse. -+ /// \returns 0 iff parsing succeeded. -+ virtual int parse (); -+ -+ /// The current debugging stream. -+ std::ostream& debug_stream () const; -+ /// Set the current debugging stream. -+ void set_debug_stream (std::ostream &); -+ -+ /// Type for debugging levels. -+ typedef int debug_level_type; -+ /// The current debugging level. -+ debug_level_type debug_level () const; -+ /// Set the current debugging level. -+ void set_debug_level (debug_level_type l); -+ -+ private: -+ /// Report a syntax error. -+ /// \param loc where the syntax error is found. -+ /// \param msg a description of the syntax error. -+ virtual void error (const location_type& loc, const std::string& msg); -+ -+ /// Generate an error message. -+ /// \param state the state where the error occurred. -+ /// \param tok the look-ahead token. -+ virtual std::string yysyntax_error_ (int yystate); -+ -+#if YYDEBUG -+ /// \brief Report a symbol value on the debug stream. -+ /// \param yytype The token type. -+ /// \param yyvaluep Its semantic value. -+ /// \param yylocationp Its location. -+ virtual void yy_symbol_value_print_ (int yytype, -+ const semantic_type* yyvaluep, -+ const location_type* yylocationp); -+ /// \brief Report a symbol on the debug stream. -+ /// \param yytype The token type. -+ /// \param yyvaluep Its semantic value. -+ /// \param yylocationp Its location. -+ virtual void yy_symbol_print_ (int yytype, -+ const semantic_type* yyvaluep, -+ const location_type* yylocationp); -+#endif /* ! YYDEBUG */ -+ -+ -+ /// State numbers. -+ typedef int state_type; -+ /// State stack type. -+ typedef stack<state_type> state_stack_type; -+ /// Semantic value stack type. -+ typedef stack<semantic_type> semantic_stack_type; -+ /// location stack type. -+ typedef stack<location_type> location_stack_type; -+ -+ /// The state stack. -+ state_stack_type yystate_stack_; -+ /// The semantic value stack. -+ semantic_stack_type yysemantic_stack_; -+ /// The location stack. -+ location_stack_type yylocation_stack_; -+ -+ /// Internal symbol numbers. -+ typedef unsigned char token_number_type; -+ /* Tables. */ -+ /// For a state, the index in \a yytable_ of its portion. -+ static const signed char yypact_[]; -+ static const signed char yypact_ninf_; -+ -+ /// For a state, default rule to reduce. -+ /// Unless\a yytable_ specifies something else to do. -+ /// Zero means the default is an error. -+ static const unsigned char yydefact_[]; -+ -+ static const signed char yypgoto_[]; -+ static const signed char yydefgoto_[]; -+ -+ /// What to do in a state. -+ /// \a yytable_[yypact_[s]]: what to do in state \a s. -+ /// - if positive, shift that token. -+ /// - if negative, reduce the rule which number is the opposite. -+ /// - if zero, do what YYDEFACT says. -+ static const unsigned char yytable_[]; -+ static const signed char yytable_ninf_; -+ -+ static const unsigned char yycheck_[]; -+ -+ /// For a state, its accessing symbol. -+ static const unsigned char yystos_[]; -+ -+ /// For a rule, its LHS. -+ static const unsigned char yyr1_[]; -+ /// For a rule, its RHS length. -+ static const unsigned char yyr2_[]; -+ -+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE -+ /// For a symbol, its name in clear. -+ static const char* const yytname_[]; -+#endif -+ -+#if YYERROR_VERBOSE -+ /// Convert the symbol name \a n to a form suitable for a diagnostic. -+ virtual std::string yytnamerr_ (const char *n); -+#endif -+ -+#if YYDEBUG -+ /// A type to store symbol numbers and -1. -+ typedef signed char rhs_number_type; -+ /// A `-1'-separated list of the rules' RHS. -+ static const rhs_number_type yyrhs_[]; -+ /// For each rule, the index of the first RHS symbol in \a yyrhs_. -+ static const unsigned char yyprhs_[]; -+ /// For each rule, its source line number. -+ static const unsigned short int yyrline_[]; -+ /// For each scanner token number, its symbol number. -+ static const unsigned short int yytoken_number_[]; -+ /// Report on the debug stream that the rule \a r is going to be reduced. -+ virtual void yy_reduce_print_ (int r); -+ /// Print the state stack on the debug stream. -+ virtual void yystack_print_ (); -+#endif -+ -+ /// Convert a scanner token number \a t to a symbol number. -+ token_number_type yytranslate_ (int t); -+ -+ /// \brief Reclaim the memory associated to a symbol. -+ /// \param yymsg Why this token is reclaimed. -+ /// \param yytype The symbol type. -+ /// \param yyvaluep Its semantic value. -+ /// \param yylocationp Its location. -+ inline void yydestruct_ (const char* yymsg, -+ int yytype, -+ semantic_type* yyvaluep, -+ location_type* yylocationp); -+ -+ /// Pop \a n symbols the three stacks. -+ inline void yypop_ (unsigned int n = 1); -+ -+ /* Constants. */ -+ static const int yyeof_; -+ /* LAST_ -- Last index in TABLE_. */ -+ static const int yylast_; -+ static const int yynnts_; -+ static const int yyempty_; -+ static const int yyfinal_; -+ static const int yyterror_; -+ static const int yyerrcode_; -+ static const int yyntokens_; -+ static const unsigned int yyuser_token_number_max_; -+ static const token_number_type yyundef_token_; -+ -+ /* Debugging. */ -+ int yydebug_; -+ std::ostream* yycdebug_; -+ -+ -+ /* User arguments. */ -+ QMake::Lexer* lexer; -+ QValueStack<ProjectAST*>& projects; -+ int depth; -+ }; -+} -+ -+ -+#endif /* ! defined PARSER_HEADER_H */ -diff -u --exclude=.svn -Nur kdev_3.4.0.org/buildtools/lib/parsers/qmake/qmake.yy kdev_3.4.0/buildtools/lib/parsers/qmake/qmake.yy ---- buildtools/lib/parsers/qmake/qmake.yy 2007-02-07 21:15:37.000000000 +0100 -+++ buildtools/lib/parsers/qmake/qmake.yy 2007-02-07 20:35:13.000000000 +0100 -@@ -2,6 +2,8 @@ - /*************************************************************************** - * Copyright (C) 2005 by Alexander Dymo * - * adymo@kdevelop.org * -+ * Copyright (C) 2006 by Andreas Pakulat * -+ * apaku@gmx.de * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Library General Public License as * -@@ -38,7 +40,9 @@ - - #define YYSTYPE_IS_DECLARED - --using namespace QMake; -+namespace QMake -+{ -+ class Lexer; - - /** - The yylval type. -@@ -70,13 +74,11 @@ - QString indent; - }; - -+#define YYSTYPE Result - typedef Result YYSTYPE; -- --void yyerror(const char *str) { -- printf("%s\n", str); - } - --int yylex(); -+extern int QMakelex( QMake::Result* yylval, QMake::Lexer* lexer ); - - /** - The stack to store ProjectAST pointers when a new child -@@ -90,7 +92,7 @@ - and pushed onto the stack. Therefore all statements which belong to the scope - or function scope are added as childs to their direct parent (scope or function scope). - */ --QValueStack<ProjectAST*> projects; -+//QValueStack<ProjectAST*> projects; - - /** - The current depth of AST node is stored here. -@@ -98,7 +100,7 @@ - be easily implemented (the parser itself looses all information - about indentation). - */ --int depth = 0; -+// int depth = 0; - - /* - To debug this parser, put the line below into the next bison file section. -@@ -107,10 +109,19 @@ - */ - %} - -+%skeleton "lalr1.cc" -+%define "parser_class_name" "Parser" -+%name-prefix="QMake" -+%parse-param { QMake::Lexer* lexer } -+%parse-param { QValueStack<ProjectAST*>& projects } -+%parse-param { int depth } -+%lex-param { QMake::Lexer* lexer } -+%start project -+ - %token ID_SIMPLE - %token EQ - %token PLUSEQ --%token MINUSQE -+%token MINUSEQ - %token STAREQ - %token TILDEEQ - %token LBRACE -@@ -228,7 +239,7 @@ - | QUOTED_VARIABLE_VALUE { $<value>$ = $<value>1; } - ; - --operator : EQ | PLUSEQ | MINUSQE | STAREQ | TILDEEQ -+operator : EQ | PLUSEQ | MINUSEQ | STAREQ | TILDEEQ - ; - - scope : ID_SIMPLE -@@ -315,4 +326,11 @@ - - %% - --#include "qmake_lex.cpp" -+ -+namespace QMake -+{ -+ void Parser::error(const location_type& /*l*/, const std::string& m) -+ { -+ std::cerr << m << std::endl; -+ } -+} -diff -u --exclude=.svn -Nur kdev_3.4.0.org/buildtools/lib/parsers/qmake/stack.hh kdev_3.4.0/buildtools/lib/parsers/qmake/stack.hh ---- buildtools/lib/parsers/qmake/stack.hh 1970-01-01 01:00:00.000000000 +0100 -+++ buildtools/lib/parsers/qmake/stack.hh 2007-02-07 20:35:16.000000000 +0100 -@@ -0,0 +1,129 @@ -+/* A Bison parser, made by GNU Bison 2.3. */ -+ -+/* Stack handling for Bison parsers in C++ -+ -+ Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2, or (at your option) -+ any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin Street, Fifth Floor, -+ Boston, MA 02110-1301, USA. */ -+ -+/* As a special exception, you may create a larger work that contains -+ part or all of the Bison parser skeleton and distribute that work -+ under terms of your choice, so long as that work isn't itself a -+ parser generator using the skeleton or a modified version thereof -+ as a parser skeleton. Alternatively, if you modify or redistribute -+ the parser skeleton itself, you may (at your option) remove this -+ special exception, which will cause the skeleton and the resulting -+ Bison output files to be licensed under the GNU General Public -+ License without this special exception. -+ -+ This special exception was added by the Free Software Foundation in -+ version 2.2 of Bison. */ -+ -+#ifndef BISON_STACK_HH -+# define BISON_STACK_HH -+ -+#include <deque> -+ -+namespace QMake -+{ -+ template <class T, class S = std::deque<T> > -+ class stack -+ { -+ public: -+ -+ // Hide our reversed order. -+ typedef typename S::reverse_iterator iterator; -+ typedef typename S::const_reverse_iterator const_iterator; -+ -+ stack () : seq_ () -+ { -+ } -+ -+ stack (unsigned int n) : seq_ (n) -+ { -+ } -+ -+ inline -+ T& -+ operator [] (unsigned int i) -+ { -+ return seq_[i]; -+ } -+ -+ inline -+ const T& -+ operator [] (unsigned int i) const -+ { -+ return seq_[i]; -+ } -+ -+ inline -+ void -+ push (const T& t) -+ { -+ seq_.push_front (t); -+ } -+ -+ inline -+ void -+ pop (unsigned int n = 1) -+ { -+ for (; n; --n) -+ seq_.pop_front (); -+ } -+ -+ inline -+ unsigned int -+ height () const -+ { -+ return seq_.size (); -+ } -+ -+ inline const_iterator begin () const { return seq_.rbegin (); } -+ inline const_iterator end () const { return seq_.rend (); } -+ -+ private: -+ -+ S seq_; -+ }; -+ -+ /// Present a slice of the top of a stack. -+ template <class T, class S = stack<T> > -+ class slice -+ { -+ public: -+ -+ slice (const S& stack, -+ unsigned int range) : stack_ (stack), -+ range_ (range) -+ { -+ } -+ -+ inline -+ const T& -+ operator [] (unsigned int i) const -+ { -+ return stack_[range_ - i]; -+ } -+ -+ private: -+ -+ const S& stack_; -+ unsigned int range_; -+ }; -+} -+ -+#endif // not BISON_STACK_HH -diff -u --exclude=.svn -Nur kdev_3.4.0.org/buildtools/lib/parsers/qmake/tests/runner.cpp kdev_3.4.0/buildtools/lib/parsers/qmake/tests/runner.cpp ---- buildtools/lib/parsers/qmake/tests/runner.cpp 2007-02-07 21:15:35.000000000 +0100 -+++ buildtools/lib/parsers/qmake/tests/runner.cpp 2007-02-07 20:35:15.000000000 +0100 -@@ -17,10 +17,26 @@ - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ --#include <qmakeast.h> --#include <qmakeastvisitor.h> --#include <qmakedriver.h> -+ -+#include <cstdlib> -+#include <iostream> -+#include <stdio.h> -+#include "qmakedriver.h" -+#include "qmakeastvisitor.h" -+ -+#include <qstring.h> -+ - #include <kdebug.h> -+#include <kcmdlineargs.h> -+#include <kurl.h> -+ -+static const KCmdLineOptions options[] = -+{ -+ {"silent", "Enable Parser debug output", 0}, -+ {"!debug", "Disable output of the generated AST", 0}, -+ {"!+files", "QMake project files", 0} -+}; -+ - - class PrintAST : QMake::ASTVisitor - { -@@ -120,14 +136,30 @@ - }; - int main(int argc, char *argv[]) - { -- QMake::ProjectAST *projectAST; -- int ret; -- if (argc > 1) -+ KCmdLineArgs::init( argc, argv, "QMake Parser", "qmake-parser", "Parse QMake project files", "1.0.0"); -+ KCmdLineArgs::addCmdLineOptions(options); -+ -+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); -+ -+ if( args->count() < 1 ) -+ { -+ KCmdLineArgs::usage(0); -+ } -+ -+ int debug = 0; -+ bool silent = false; -+ -+ if( args->isSet("silent") ) -+ silent = true; -+ if( args->isSet("debug") ) -+ debug = 1; -+ for( int i = 0 ; i < args->count() ; i++ ) - { -- ret = QMake::Driver::parseFile(argv[1], &projectAST); -+ QMake::ProjectAST *projectAST; -+ int ret = QMake::Driver::parseFile(argv[1], &projectAST, debug); - PrintAST pa; - if ( ret == 0 ) -- if ((argc < 3) || ((argc == 3) && (strcmp(argv[2], "--silent") != 0))) -+ if ( !silent ) - { - pa.processProject(projectAST); - QString profile; -@@ -136,6 +168,5 @@ - } - return ret; - } -- else -- return 0; -+ return 0; - } -diff -u --exclude=.svn -Nur kdev_3.4.0.org/buildtools/lib/parsers/qmake/tests/viewer.cpp kdev_3.4.0/buildtools/lib/parsers/qmake/tests/viewer.cpp ---- buildtools/lib/parsers/qmake/tests/viewer.cpp 2007-02-07 21:15:35.000000000 +0100 -+++ buildtools/lib/parsers/qmake/tests/viewer.cpp 2007-02-07 20:35:15.000000000 +0100 -@@ -78,7 +78,7 @@ - source->setText(str.read()); - f.close(); - -- int result = QMake::Driver::parseFile(item->text().ascii(), &projectAST); -+ int result = QMake::Driver::parseFile(item->text().ascii(), &projectAST, 0); - if (projectAST && (result == 0)) - { - processAST(projectAST); -diff -u --exclude=.svn -Nur kdev_3.4.0.org/buildtools/qmake/scope.cpp kdev_3.4.0/buildtools/qmake/scope.cpp ---- buildtools/qmake/scope.cpp 2007-02-07 21:15:44.000000000 +0100 -+++ buildtools/qmake/scope.cpp 2007-02-07 20:57:21.000000000 +0100 -@@ -147,7 +147,7 @@ - - bool Scope::loadFromFile( const QString& filename ) - { -- if ( !QFileInfo(filename).exists() || QMake::Driver::parseFile( filename, &m_root ) != 0 ) -+ if ( !QFileInfo(filename).exists() || QMake::Driver::parseFile( filename, &m_root, 0 ) != 0 ) - { - kdDebug( 9024 ) << "Couldn't parse project: " << filename << endl; - m_root = 0; diff --git a/devel/kdevelop/files/patch-kdev_fix_hang_3.4.1 b/devel/kdevelop/files/patch-kdev_fix_hang_3.4.1 new file mode 100644 index 000000000000..28821eef5360 --- /dev/null +++ b/devel/kdevelop/files/patch-kdev_fix_hang_3.4.1 @@ -0,0 +1,54 @@ +diff -u -u kdevelop-3.4.1/languages/cpp/cppsupportpart.cpp kdevelop-svn/languages/cpp/cppsupportpart.cpp +--- languages/cpp/cppsupportpart.cpp 2007-05-16 16:36:20.000000000 +0200 ++++ languages/cpp/cppsupportpart.cpp 2007-05-16 00:25:57.000000000 +0200 +@@ -3130,11 +3130,11 @@ + return QString::null; + } + +-UIBlockTester::UIBlockTesterThread::UIBlockTesterThread( UIBlockTester& parent ) : QThread(), m_parent( parent ) { ++UIBlockTester::UIBlockTesterThread::UIBlockTesterThread( UIBlockTester& parent ) : QThread(), m_parent( parent ), m_stop(false) { + } + + void UIBlockTester::UIBlockTesterThread::run() { +- while(1) { ++ while(!m_stop) { + msleep( m_parent.m_msecs / 10 ); + m_parent.m_timeMutex.lock(); + QDateTime t = QDateTime::currentDateTime(); +@@ -3146,7 +3146,11 @@ + m_parent.m_timeMutex.unlock(); + } + } +- ++ ++void UIBlockTester::UIBlockTesterThread::stop() { ++ m_stop = true; ++} ++ + UIBlockTester::UIBlockTester( uint milliseconds ) : m_thread( *this ), m_msecs( milliseconds ) { + m_timer = new QTimer( this ); + m_timer->start( milliseconds/10 ); +@@ -3155,7 +3159,7 @@ + m_thread.start(); + } + UIBlockTester::~UIBlockTester() { +- m_thread.terminate(); ++ m_thread.stop(); + m_thread.wait(); + } + +diff -u -u kdevelop-3.4.1/languages/cpp/cppsupportpart.h kdevelop-svn/languages/cpp/cppsupportpart.h +--- languages/cpp/cppsupportpart.h 2007-05-16 16:36:20.000000000 +0200 ++++ languages/cpp/cppsupportpart.h 2007-05-16 00:25:57.000000000 +0200 +@@ -43,9 +43,10 @@ + public: + UIBlockTesterThread( UIBlockTester& parent ); + void run(); +- ++ void stop(); + private: + UIBlockTester& m_parent; ++ bool m_stop; + }; + friend class UIBlockTesterThread; + public: diff --git a/devel/kdevelop/pkg-plist b/devel/kdevelop/pkg-plist index 84a292769171..58c8418abdde 100644 --- a/devel/kdevelop/pkg-plist +++ b/devel/kdevelop/pkg-plist @@ -143,12 +143,18 @@ include/kdevelop/widgets/qcomboview.h include/kdevelop/widgets/resizablecombo.h include/kinterfacedesigner/designer.h lib/kconf_update_bin/kdev-gen-settings-kconf_update +lib/kde3/kded_kdevsvnd.a +lib/kde3/kded_kdevsvnd.la +lib/kde3/kded_kdevsvnd.so lib/kde3/kio_chm.a lib/kde3/kio_chm.la lib/kde3/kio_chm.so lib/kde3/kio_csharpdoc.a lib/kde3/kio_csharpdoc.la lib/kde3/kio_csharpdoc.so +lib/kde3/kio_kdevsvn.a +lib/kde3/kio_kdevsvn.la +lib/kde3/kio_kdevsvn.so lib/kde3/kio_perldoc.a lib/kde3/kio_perldoc.la lib/kde3/kio_perldoc.so @@ -1311,6 +1317,7 @@ share/apps/kdevrubysupport/pics/ruby_config.png share/apps/kdevrubysupport/pics/ruby_run.png share/apps/kdevscripting/kdevscripting.rc share/apps/kdevscriptproject/kdevscriptproject.rc +share/apps/kdevsnippet/kdevpart_snippet.rc share/apps/kdevsqlsupport/kdevsqlsupport.rc share/apps/kdevtipofday/kdevpart_tipofday.rc share/apps/kdevtipofday/tips @@ -1482,6 +1489,7 @@ share/services/docdoxygenplugin.desktop share/services/dockdevtocplugin.desktop share/services/docqtplugin.desktop share/services/kchmpart.desktop +share/services/kded/kdevsvnd.desktop share/services/kdevabbrev.desktop share/services/kdevadaproject.desktop share/services/kdevadasupport.desktop @@ -1553,6 +1561,11 @@ share/services/kdevsnippet.desktop share/services/kdevsqlsupport.desktop share/services/kdevsubversion.desktop share/services/kdevsubversionintegrator.desktop +share/services/kdevsvn+file.protocol +share/services/kdevsvn+http.protocol +share/services/kdevsvn+https.protocol +share/services/kdevsvn+ssh.protocol +share/services/kdevsvn+svn.protocol share/services/kdevtexttools.desktop share/services/kdevtipofday.desktop share/services/kdevtmakeproject.desktop @@ -1761,6 +1774,7 @@ share/servicetypes/kdevelopversioncontrol.desktop @dirrm share/apps/kdevtools @dirrm share/apps/kdevtipofday @dirrm share/apps/kdevsqlsupport +@dirrm share/apps/kdevsnippet @dirrm share/apps/kdevscriptproject @dirrm share/apps/kdevscripting @dirrm share/apps/kdevrubysupport/pics |