ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/configure.ac
(Generate patch)

Comparing rxvt-unicode/configure.ac (file contents):
Revision 1.15 by ayin, Sat Jan 21 18:15:07 2006 UTC vs.
Revision 1.33 by root, Sat Jan 28 21:27:17 2006 UTC

33AC_PROG_CPP 33AC_PROG_CPP
34AC_PROG_INSTALL 34AC_PROG_INSTALL
35 35
36AC_AIX 36AC_AIX
37AC_ISC_POSIX 37AC_ISC_POSIX
38
39AC_LANG(C) 38AC_LANG(C++)
40 39
41dnl check wetehr we can link with gcc -lsupc++ 40dnl check wether we can link with gcc -lsupc++
42LINKER="$CXX"
43if test x$GCC = xyes && test x$GXX = xyes; then 41if test x$GCC = xyes && test x$GXX = xyes; then
44 AC_CHECK_LIB(supc++, main, [ 42 dnl FreeBSD (at least up to 5.3) has a broken GCC, workaround it
45 LINKER="$CC" 43 AC_MSG_CHECKING([for working libsupc++])
44 save_CXX="$CXX"
45 save_LIBS="$LIBS"
46 CXX="$CC"
46 LIBS="$LIBS -lsupc++" 47 LIBS="$LIBS -lsupc++"
48 LINKER="$CC"
49 AC_LINK_IFELSE(
50 [AC_LANG_PROGRAM([struct test { }; void f() try { throw new test; } catch (...) { throw; }])],
51 [AC_MSG_RESULT(ok)],
52 [
53 AC_MSG_RESULT([no, making everything bigger and slower])
54 LIBS="$save_LIBS"
55 LINKER="$save_CXX"
56 ]
47 ]) 57 )
58 CXX="$save_CXX"
48fi 59fi
49AC_SUBST(LINKER,[$LINKER]) 60AC_SUBST(LINKER,[$LINKER])
50 61
51AC_LANG(C++) 62AC_LANG(C++)
52dnl# -------------------------------------------------------------------------- 63dnl# --------------------------------------------------------------------------
53dnl# Supply default CXXFLAGS, if not specified by `CXXFLAGS=flags ./configure' 64dnl# Supply default CXXFLAGS, if not specified by `CXXFLAGS=flags ./configure'
54dnl# 65dnl#
55if test -z "$orig_CXXFLAGS"; then 66if test -z "$orig_CXXFLAGS"; then
56 if test x$GCC = xyes && test "x$GXX" = xyes; then 67 if test x$GCC = xyes && test "x$GXX" = xyes; then
57 CXXFLAGS="-g -O3 -fno-threadsafe-statics -fno-enforce-eh-specs" 68 CXXFLAGS="-g -O3 -fno-threadsafe-statics -fno-enforce-eh-specs"
58 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [], [CXXFLAGS="-g -O3"]) 69 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [], [CXXFLAGS="-g -O3"])
59 else 70 else
60 CXXFLAGS="-O" 71 CXXFLAGS="-O"
61 fi 72 fi
62 CFLAGS="$CXXFLAGS" 73 CFLAGS="$CXXFLAGS"
81 92
82dnl# solaris needs to link libnsl and socket 93dnl# solaris needs to link libnsl and socket
83AC_CHECK_FUNC(gethostbyname, [], [AC_CHECK_LIB(nsl, gethostbyname, [LIBS="$LIBS -lnsl"])]) 94AC_CHECK_FUNC(gethostbyname, [], [AC_CHECK_LIB(nsl, gethostbyname, [LIBS="$LIBS -lnsl"])])
84AC_CHECK_FUNC(socket, [], [AC_CHECK_LIB(socket, socket, [LIBS="$LIBS -lsocket"])]) 95AC_CHECK_FUNC(socket, [], [AC_CHECK_LIB(socket, socket, [LIBS="$LIBS -lsocket"])])
85 96
86dnl# more solaris
87AC_CHECK_FUNC(sched_yield, [], [AC_CHECK_LIB(rt, sched_yield, [LIBS="$LIBS -lrt"])])
88
89dnl# sched_yield to improve terminal efficiency
90AC_MSG_CHECKING(for sched_yield support)
91AC_TRY_LINK([#include <sched.h>],[sched_yield ()],
92 [AC_MSG_RESULT(yes)
93 AC_DEFINE(HAVE_SCHED_YIELD, 1, Define if you have sched-h and sched_yield)],
94 [AC_MSG_RESULT(no)])
95
96dnl AC_ENABLE_SHARED(no)dnl# libtool 97dnl AC_ENABLE_SHARED(no)dnl# libtool
97dnl AC_ENABLE_STATIC(yes)dnl# libtool 98dnl AC_ENABLE_STATIC(yes)dnl# libtool
98dnl AC_PROG_LIBTOOL()dnl# libtool 99dnl AC_PROG_LIBTOOL()dnl# libtool
99
100MALLOC_TYPE=S
101 100
102support_frills=yes 101support_frills=yes
103support_inheritpixmap=yes 102support_inheritpixmap=yes
104support_tinting=yes 103support_tinting=yes
105support_fading=yes 104support_fading=yes
106support_keepscrolling=yes 105support_keepscrolling=yes
107support_selectionscrolling=yes 106support_selectionscrolling=yes
108support_mousewheel=yes 107support_mousewheel=yes
109support_mouseslipwheel=yes 108support_mouseslipwheel=yes
110support_utmp=yes
111support_wtmp=yes
112support_lastlog=yes
113support_text_blink=yes 109support_text_blink=yes
114support_pointer_blank=yes 110support_pointer_blank=yes
115support_scroll_rxvt=yes 111support_scroll_rxvt=yes
116support_scroll_next=yes 112support_scroll_next=yes
117support_scroll_xterm=yes 113support_scroll_xterm=yes
141 [ --enable-everything enable standard non-multichoice features 137 [ --enable-everything enable standard non-multichoice features
142 NOTE: this option is order dependent 138 NOTE: this option is order dependent
143 NOTE: automatically enabled with --enable-shared], 139 NOTE: automatically enabled with --enable-shared],
144 [ 140 [
145 if test x$enableval = xno; then 141 if test x$enableval = xno; then
146 support_24bit=no
147 support_frills=no 142 support_frills=no
148 support_inheritpixmap=no 143 support_inheritpixmap=no
149 support_tinting=no 144 support_tinting=no
150 support_fading=no 145 support_fading=no
151 support_keepscrolling=no 146 support_keepscrolling=no
171 support_styles=no 166 support_styles=no
172 support_perl=no 167 support_perl=no
173 codesets= 168 codesets=
174 fi 169 fi
175 if test x$enableval = xyes; then 170 if test x$enableval = xyes; then
176 support_24bit=yes
177 support_frills=yes 171 support_frills=yes
178 support_inheritpixmap=yes 172 support_inheritpixmap=yes
179 support_tinting=yes 173 support_tinting=yes
180 support_fading=yes 174 support_fading=yes
181 support_keepscrolling=yes 175 support_keepscrolling=yes
226 [ --enable-font-styles enable bold and italic support], 220 [ --enable-font-styles enable bold and italic support],
227 [if test x$enableval = xyes -o x$enableval = xno; then 221 [if test x$enableval = xyes -o x$enableval = xno; then
228 support_styles=$enableval 222 support_styles=$enableval
229 fi]) 223 fi])
230 224
231AC_ARG_ENABLE(utmp,
232 [ --enable-utmp enable utmp (utmpx) support],
233 [if test x$enableval = xyes -o x$enableval = xno; then
234 support_utmp=$enableval
235 fi])
236
237AC_ARG_ENABLE(wtmp,
238 [ --enable-wtmp enable wtmp (wtmpx) support (requires --enable-utmp)],
239 [if test x$enableval = xyes -o x$enableval = xno; then
240 support_wtmp=$enableval
241 fi])
242
243AC_ARG_ENABLE(lastlog,
244 [ --enable-lastlog enable lastlog support (requires --enable-utmp)],
245 [if test x$enableval = xyes -o x$enableval = xno; then
246 support_lastlog=$enableval
247 fi])
248
249AC_ARG_ENABLE(xpm-background, 225AC_ARG_ENABLE(xpm-background,
250 [ --enable-xpm-background enable XPM background pixmaps], 226 [ --enable-xpm-background enable XPM background pixmaps],
251 [if test x$enableval = xyes -o x$enableval = xno; then 227 [if test x$enableval = xyes -o x$enableval = xno; then
252 support_xpm=$enableval 228 support_xpm=$enableval
253 fi]) 229 fi])
312 288
313AC_ARG_ENABLE(xim, 289AC_ARG_ENABLE(xim,
314 [ --enable-xim XIM (X Input Method) protocol support], 290 [ --enable-xim XIM (X Input Method) protocol support],
315 [if test x$enableval = xyes -o x$enableval = xno; then 291 [if test x$enableval = xyes -o x$enableval = xno; then
316 support_xim=$enableval 292 support_xim=$enableval
317 fi])
318
319AC_ARG_ENABLE(ttygid,
320 [ --enable-ttygid enable tty setting to group named "tty"],
321 [if test x$enableval = xyes; then
322 AC_DEFINE(TTY_GID_SUPPORT, 1, Define to change gid of ttys to group tty)
323 fi]) 293 fi])
324 294
325AC_ARG_ENABLE(backspace-key, 295AC_ARG_ENABLE(backspace-key,
326 [ --disable-backspace-key disable handling of the backspace key], 296 [ --disable-backspace-key disable handling of the backspace key],
327 [if test x$enableval = xno; then 297 [if test x$enableval = xno; then
396 [ --enable-frills enable support for rarely used features], 366 [ --enable-frills enable support for rarely used features],
397 [if test x$enableval = xyes -o x$enableval = xno; then 367 [if test x$enableval = xyes -o x$enableval = xno; then
398 support_frills=$enableval 368 support_frills=$enableval
399 fi]) 369 fi])
400 370
401AC_ARG_ENABLE(24bit,
402 [ --enable-24bit enable support for using 24bit visuals if available],
403 [if test x$enableval = xyes -o x$enableval = xno; then
404 support_24bit=$enableval
405 fi])
406
407AC_ARG_ENABLE(keepscrolling, 371AC_ARG_ENABLE(keepscrolling,
408 [ --enable-keepscrolling enable continual scrolling on scrollbar arrow press], 372 [ --enable-keepscrolling enable continual scrolling on scrollbar arrow press],
409 [if test x$enableval = xyes -o x$enableval = xno; then 373 [if test x$enableval = xyes -o x$enableval = xno; then
410 support_keepscrolling=$enableval 374 support_keepscrolling=$enableval
411 fi]) 375 fi])
424 388
425AC_ARG_ENABLE(slipwheeling, 389AC_ARG_ENABLE(slipwheeling,
426 [ --enable-slipwheeling enable slip wheel scrolling (requires previous)], 390 [ --enable-slipwheeling enable slip wheel scrolling (requires previous)],
427 [if test x$enableval = xyes -o x$enableval = xno; then 391 [if test x$enableval = xyes -o x$enableval = xno; then
428 support_mouseslipwheel=$enableval 392 support_mouseslipwheel=$enableval
429 fi])
430
431AC_ARG_ENABLE(dmalloc,
432 [ --enable-dmalloc enable Gray Watson's malloc - for debugging use],
433 [if test x$enableval = xyes; then
434 MALLOC_TYPE=G
435 DEBUG=-DDEBUG_MALLOC
436 DLIB="-L/usr/local/lib -ldmalloc"
437 DINCLUDE=-I/usr/local/include
438 fi])
439
440AC_ARG_ENABLE(dlmalloc,
441 [ --enable-dlmalloc enable Doug Lea's malloc - for production use
442 NOTE: enable only one malloc package],
443 [if test x$enableval = xyes; then
444 MALLOC_TYPE=D
445 DEBUG=
446 DLIB="-L/usr/local/lib -ldlmalloc"
447 DINCLUDE=
448 fi]) 393 fi])
449 394
450AC_ARG_ENABLE(smart-resize, 395AC_ARG_ENABLE(smart-resize,
451 [ --enable-smart-resize enable smart growth/shrink behaviour], 396 [ --enable-smart-resize enable smart growth/shrink behaviour],
452 [if test x$enableval = xyes; then 397 [if test x$enableval = xyes; then
478 fi]) 423 fi])
479 424
480dnl# -------------------------------------------------------------------------- 425dnl# --------------------------------------------------------------------------
481 426
482AC_PATH_PROG(MV, mv, mv) 427AC_PATH_PROG(MV, mv, mv)
483AC_PATH_PROG(RM, rm, rm)
484AC_PATH_PROG(CP, cp, cp) 428AC_PATH_PROG(CP, cp, cp)
485AC_PATH_PROG(LN, ln, ln) 429AC_PATH_PROG(LN, ln, ln)
486AC_PATH_PROG(SED, sed, sed) 430AC_PATH_PROG(SED, sed, sed)
487AC_PATH_PROG(ECHO, echo, echo) 431AC_PATH_PROG(ECHO, echo, echo)
488AC_PATH_PROG(CMP, cmp, cmp) 432AC_PATH_PROG(CMP, cmp, cmp)
698dnl> AC_FUNC_VPRINTF 642dnl> AC_FUNC_VPRINTF
699 643
700AC_CHECK_FUNCS( \ 644AC_CHECK_FUNCS( \
701 unsetenv \ 645 unsetenv \
702 setutent \ 646 setutent \
703 seteuid \
704 setresuid \
705 setreuid \
706 on_exit \ 647 on_exit \
707 nanosleep \
708) 648)
709 649
710UTMP_CHECK 650UTMP_CHECK
711 651
712dnl# -------------------------------------------------------------------------- 652dnl# --------------------------------------------------------------------------
770[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]], [[nl_langinfo(CODESET);]])],[rxvt_cv_func_nl_langinfo=yes],[rxvt_cv_func_nl_langinfo=no])]) 710[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]], [[nl_langinfo(CODESET);]])],[rxvt_cv_func_nl_langinfo=yes],[rxvt_cv_func_nl_langinfo=no])])
771if test x$rxvt_cv_func_nl_langinfo = xyes; then 711if test x$rxvt_cv_func_nl_langinfo = xyes; then
772 AC_DEFINE(HAVE_NL_LANGINFO, 1, Define if nl_langinfo(CODESET) works) 712 AC_DEFINE(HAVE_NL_LANGINFO, 1, Define if nl_langinfo(CODESET) works)
773fi 713fi
774 714
775AC_CACHE_CHECK(for unix-compliant filehandle passing ability, rxvt_can_pass_fds, 715SCM_RIGHTS_CHECK
776[AC_TRY_LINK([
777#include <sys/types.h>
778#include <sys/socket.h>
779],[
780{
781 msghdr msg;
782 iovec iov;
783 char buf [100];
784 char data = 0;
785
786 iov.iov_base = &data;
787 iov.iov_len = 1;
788
789 msg.msg_iov = &iov;
790 msg.msg_iovlen = 1;
791 msg.msg_control = buf;
792 msg.msg_controllen = sizeof buf;
793
794 cmsghdr *cmsg = CMSG_FIRSTHDR (&msg);
795 cmsg->cmsg_level = SOL_SOCKET;
796 cmsg->cmsg_type = SCM_RIGHTS;
797 cmsg->cmsg_len = 100;
798
799 *(int *)CMSG_DATA (cmsg) = 5;
800
801 return sendmsg (3, &msg, 0);
802}
803],[rxvt_can_pass_fds=yes],[rxvt_can_pass_fds=no])])
804if test x$rxvt_can_pass_fds = xyes; then
805 AC_DEFINE(HAVE_UNIX_FDPASS, 1, Define if sys/socket.h defines the necessary macros/functions for file handle passing)
806else
807 AC_MSG_ERROR([urxvt requires unix-compliant filehandle passing ability])
808fi
809 716
810AC_CACHE_CHECK(for broken XIM callback, rxvt_broken_ximcb, 717AC_CACHE_CHECK(for broken XIM callback, rxvt_broken_ximcb,
811[AC_COMPILE_IFELSE([ 718[AC_COMPILE_IFELSE([
812#include <X11/Xlib.h> 719#include <X11/Xlib.h>
813 720
823 AC_DEFINE(XIMCB_PROTO_BROKEN, 1, Define if your XIMCallback specifies XIC as first type.) 730 AC_DEFINE(XIMCB_PROTO_BROKEN, 1, Define if your XIMCallback specifies XIC as first type.)
824fi 731fi
825 732
826PTY_CHECK 733PTY_CHECK
827 734
735TTY_GROUP_CHECK
736
828dnl# -------------------------------------------------------------------------- 737dnl# --------------------------------------------------------------------------
829dnl# now add and remove other stuff 738dnl# now add and remove other stuff
830dnl# -------------------------------------------------------------------------- 739dnl# --------------------------------------------------------------------------
831if test x$support_xft = xyes; then 740if test x$support_xft = xyes; then
832 LIBS="$LIBS `pkg-config xft --libs`" 741 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
742 if test $PKG_CONFIG != no && $PKG_CONFIG --exists xft; then
743 LIBS="$LIBS `$PKG_CONFIG xft --libs`"
833 CPPFLAGS="$CPPFLAGS `pkg-config xft --cflags`" 744 CPPFLAGS="$CPPFLAGS `$PKG_CONFIG xft --cflags`"
745 else
746 AC_PATH_PROG(XFT_CONFIG, xft-config, no)
747 if test $XFT_CONFIG != no; then
748 LIBS="$LIBS `$XFT_CONFIG --libs`"
749 CPPFLAGS="$CPPFLAGS `$XFT_CONFIG --cflags`"
750 fi
751 fi
834 752
835 AC_CHECK_HEADERS(X11/Xft/Xft.h,,[support_xft=no]) 753 AC_CHECK_HEADERS(X11/Xft/Xft.h,,[support_xft=no])
836 AC_CHECK_LIB(Xft,XftDrawString32,,[support_xft=no]) 754 AC_CHECK_LIB(Xft,XftDrawString32,,[support_xft=no])
837 755
838 if test x$support_xft = xyes; then 756 if test x$support_xft = xyes; then
864 AC_DEFINE(SELECTION_SCROLLING, 1, Define to allow scrolling when the selection moves to the top or bottom of the screen) 782 AC_DEFINE(SELECTION_SCROLLING, 1, Define to allow scrolling when the selection moves to the top or bottom of the screen)
865fi 783fi
866if test x$support_frills = xyes; then 784if test x$support_frills = xyes; then
867 AC_DEFINE(ENABLE_FRILLS, 1, Define if you want handling for rarely used but handy features) 785 AC_DEFINE(ENABLE_FRILLS, 1, Define if you want handling for rarely used but handy features)
868fi 786fi
869if test x$support_24bit = xyes; then
870 AC_DEFINE(PREFER_24BIT, 1, Define to use a 24 bit visual if the screen has 24 bit mode, even if the default is 8 bit)
871fi
872if test x$support_mousewheel = xyes; then 787if test x$support_mousewheel = xyes; then
873 AC_DEFINE(MOUSE_WHEEL, 1, Define to use wheel events (button4 and button5) to scroll) 788 AC_DEFINE(MOUSE_WHEEL, 1, Define to use wheel events (button4 and button5) to scroll)
874fi 789fi
875if test x$support_mouseslipwheel = xyes; then 790if test x$support_mouseslipwheel = xyes; then
876 AC_DEFINE(MOUSE_SLIP_WHEELING, 1, Define to have CTRL cause wheel events to accelerate scrolling. Release CTRL to halt scrolling) 791 AC_DEFINE(MOUSE_SLIP_WHEELING, 1, Define to have CTRL cause wheel events to accelerate scrolling. Release CTRL to halt scrolling)
877fi
878if test x$support_utmp = xyes; then
879 AC_DEFINE(UTMP_SUPPORT, 1, Define if you want to have utmp/utmpx support)
880fi
881if test x$support_wtmp = xyes; then
882 AC_DEFINE(WTMP_SUPPORT, 1, Define if you want to have wtmp support when utmp/utmpx is enabled)
883fi
884if test x$support_lastlog = xyes; then
885 AC_DEFINE(LASTLOG_SUPPORT, 1, Define if you want to have lastlog support when utmp/utmpx is enabled)
886fi 792fi
887if test x$support_xim = xyes -o x$multichar_set = xyes; then 793if test x$support_xim = xyes -o x$multichar_set = xyes; then
888 if test x$rxvt_cv_func_xlocale = xyes; then 794 if test x$rxvt_cv_func_xlocale = xyes; then
889 AC_DEFINE(USE_XIM, 1, Define if you want to have XIM (X Input Method) protocol support - required for multibyte characters input) 795 AC_DEFINE(USE_XIM, 1, Define if you want to have XIM (X Input Method) protocol support - required for multibyte characters input)
890 fi 796 fi
1050 Install path: ${prefix}/bin 956 Install path: ${prefix}/bin
1051 Compiler: $CXX 957 Compiler: $CXX
1052 Compiler flags: $CFLAGS 958 Compiler flags: $CFLAGS
1053 Linker: $LINKER" 959 Linker: $LINKER"
1054 960
1055if test "$MALLOC_TYPE" = S; then
1056 echo " malloc support: system default"
1057fi
1058if test "$MALLOC_TYPE" = G; then
1059 echo " malloc support: Gray Watson's dmalloc"
1060fi
1061if test "$MALLOC_TYPE" = D; then
1062 echo " malloc support: Doug Lea's malloc"
1063fi
1064
1065if test x$support_xpm = xyes; then 961if test x$support_xpm = xyes; then
1066 echo " Xpm library: $XPM_LIBS" 962 echo " Xpm library: $XPM_LIBS"
1067fi 963fi
1068 964
1069echo "
1070The following are set in config.h
1071"
1072if test x$support_utmp != xyes; then
1073 echo " utmp support: disabled"
1074 echo
1075else
1076 echo " utmp support: enabled
1077 utmp file: $rxvt_cv_path_utmp
1078 utmpx file: $rxvt_cv_path_utmpx
1079 wtmp file: $rxvt_cv_path_wtmp
1080 wtmpx file: $rxvt_cv_path_wtmpx
1081 lastlog file: $rxvt_cv_path_lastlog
1082 ttys/ttytab file: $rxvt_cv_path_ttytab
1083 embedded perl: $support_perl"
1084 echo
1085fi
1086if test x$term != x; then 965if test x$term != x; then
1087 echo " set TERM to: $term" 966 echo " set TERM to: $term"
1088fi 967fi
1089if test x$terminfo != x; then 968if test x$terminfo != x; then
1090 echo " set TERMINFO to: $terminfo" 969 echo " set TERMINFO to: $terminfo"
1092echo " default resource name: $RESNAME" 971echo " default resource name: $RESNAME"
1093echo " resource class: $RESCLASS" 972echo " resource class: $RESCLASS"
1094if test x$RESFALLBACK != x; then 973if test x$RESFALLBACK != x; then
1095 echo " resource class fallback: $RESFALLBACK" 974 echo " resource class fallback: $RESFALLBACK"
1096fi 975fi
976echo
977echo " embedded perl: $support_perl"
1097echo 978echo
1098if test x$support_xpm = xneedsmanualspecification; then 979if test x$support_xpm = xneedsmanualspecification; then
1099 echo ".----------------------------------------------------------------." 980 echo ".----------------------------------------------------------------."
1100 echo ". WARNING: --enable-xpm-background was specified however the ." 981 echo ". WARNING: --enable-xpm-background was specified however the ."
1101 echo ". XPM includes files and libraries could not be found. ." 982 echo ". XPM includes files and libraries could not be found. ."
1111 echo ". functions could not be found. ." 992 echo ". functions could not be found. ."
1112 echo ". XIM is now being DISABLED! ." 993 echo ". XIM is now being DISABLED! ."
1113 echo ".----------------------------------------------------------------." 994 echo ".----------------------------------------------------------------."
1114fi 995fi
1115 996
1116echo " *** Optionally check src/feature.h for further options ***" 997echo "*** Optionally check src/feature.h for further, rarely used options ***"
1117echo 998echo
1118 999
1119echo ".----------------------------------------------------------------."
1120echo ". NOTE: some features are disabled by default, try ."
1121echo ". configure --help to get an idea of the optional features, ."
1122echo ". or read ./README.configure ."
1123echo ". ."
1124echo ". The script ./reconf gives a reasonable baseline, try it if ."
1125echo ". you do not want to read documentation and still want some ."
1126echo ". useful features. ."
1127echo ".----------------------------------------------------------------."
1128echo
1129

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines