summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Deutschmann <whissi@gentoo.org>2017-10-13 22:16:10 +0200
committerThomas Deutschmann <whissi@gentoo.org>2017-10-13 22:19:23 +0200
commitaa6c077d00c3a21b75ae646421aefadcad527f80 (patch)
tree5f0f7d63de8594c3e76185b2cef937a751917126 /sys-devel/flex
parentprofiles/license_groups: Update link to GLEP 23. (diff)
downloadgentoo-aa6c077d00c3a21b75ae646421aefadcad527f80.tar.gz
gentoo-aa6c077d00c3a21b75ae646421aefadcad527f80.tar.bz2
gentoo-aa6c077d00c3a21b75ae646421aefadcad527f80.zip
sys-devel/flex: Rev bump to fix multiple problems
Closes: https://bugs.gentoo.org/628744 Closes: https://bugs.gentoo.org/625508 See: https://bugs.gentoo.org/632523 Package-Manager: Portage-2.3.10, Repoman-2.3.3
Diffstat (limited to 'sys-devel/flex')
-rw-r--r--sys-devel/flex/files/flex-2.6.4-fix-build-with-glibc2.6+.patch767
-rw-r--r--sys-devel/flex/files/flex-2.6.4-libobjdir.patch26
-rw-r--r--sys-devel/flex/flex-2.6.4-r1.ebuild85
3 files changed, 878 insertions, 0 deletions
diff --git a/sys-devel/flex/files/flex-2.6.4-fix-build-with-glibc2.6+.patch b/sys-devel/flex/files/flex-2.6.4-fix-build-with-glibc2.6+.patch
new file mode 100644
index 00000000000..328b5752456
--- /dev/null
+++ b/sys-devel/flex/files/flex-2.6.4-fix-build-with-glibc2.6+.patch
@@ -0,0 +1,767 @@
+Backport of https://github.com/westes/flex/commit/24fd0551333e7eded87b64dd36062da3df2f6380
+
+Bug: https://bugs.gentoo.org/628744
+
+--- a/configure
++++ b/configure
+@@ -3605,13 +3605,142 @@ test -z "$SED" && SED=sed
+ Xsed="$SED -e 1s/^X//"
+
+
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
++$as_echo_n "checking how to run the C preprocessor... " >&6; }
++# On Suns, sometimes $CPP names a directory.
++if test -n "$CPP" && test -d "$CPP"; then
++ CPP=
++fi
++if test -z "$CPP"; then
++ if ${ac_cv_prog_CPP+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ # Double quotes because CPP needs to be expanded
++ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
++ do
++ ac_preproc_ok=false
++for ac_c_preproc_warn_flag in '' yes
++do
++ # Use a header file that comes with gcc, so configuring glibc
++ # with a fresh cross-compiler works.
++ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ # <limits.h> exists even on freestanding compilers.
++ # On the NeXT, cc -E runs the code through the compiler's parser,
++ # not just through cpp. "Syntax error" is here to catch this case.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
++ Syntax error
++_ACEOF
++if ac_fn_c_try_cpp "$LINENO"; then :
++
++else
++ # Broken: fails on valid input.
++continue
++fi
++rm -f conftest.err conftest.i conftest.$ac_ext
++
++ # OK, works on sane cases. Now check whether nonexistent headers
++ # can be detected and how.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <ac_nonexistent.h>
++_ACEOF
++if ac_fn_c_try_cpp "$LINENO"; then :
++ # Broken: success on invalid input.
++continue
++else
++ # Passes both tests.
++ac_preproc_ok=:
++break
++fi
++rm -f conftest.err conftest.i conftest.$ac_ext
++
++done
++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
++rm -f conftest.i conftest.err conftest.$ac_ext
++if $ac_preproc_ok; then :
++ break
++fi
+
++ done
++ ac_cv_prog_CPP=$CPP
+
++fi
++ CPP=$ac_cv_prog_CPP
++else
++ ac_cv_prog_CPP=$CPP
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
++$as_echo "$CPP" >&6; }
++ac_preproc_ok=false
++for ac_c_preproc_warn_flag in '' yes
++do
++ # Use a header file that comes with gcc, so configuring glibc
++ # with a fresh cross-compiler works.
++ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ # <limits.h> exists even on freestanding compilers.
++ # On the NeXT, cc -E runs the code through the compiler's parser,
++ # not just through cpp. "Syntax error" is here to catch this case.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
++ Syntax error
++_ACEOF
++if ac_fn_c_try_cpp "$LINENO"; then :
+
++else
++ # Broken: fails on valid input.
++continue
++fi
++rm -f conftest.err conftest.i conftest.$ac_ext
+
++ # OK, works on sane cases. Now check whether nonexistent headers
++ # can be detected and how.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <ac_nonexistent.h>
++_ACEOF
++if ac_fn_c_try_cpp "$LINENO"; then :
++ # Broken: success on invalid input.
++continue
++else
++ # Passes both tests.
++ac_preproc_ok=:
++break
++fi
++rm -f conftest.err conftest.i conftest.$ac_ext
+
++done
++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
++rm -f conftest.i conftest.err conftest.$ac_ext
++if $ac_preproc_ok; then :
+
++else
++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
++See \`config.log' for more details" "$LINENO" 5; }
++fi
+
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+@@ -3744,91 +3873,208 @@ $as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+-$as_echo_n "checking for fgrep... " >&6; }
+-if ${ac_cv_path_FGREP+:} false; then :
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
++$as_echo_n "checking for ANSI C header files... " >&6; }
++if ${ac_cv_header_stdc+:} false; then :
+ $as_echo_n "(cached) " >&6
+ else
+- if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+- then ac_cv_path_FGREP="$GREP -F"
+- else
+- if test -z "$FGREP"; then
+- ac_path_FGREP_found=false
+- # Loop through the user's path and test for each of PROGNAME-LIST
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_prog in fgrep; do
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+- as_fn_executable_p "$ac_path_FGREP" || continue
+-# Check for GNU ac_path_FGREP and select it if it is found.
+- # Check for GNU $ac_path_FGREP
+-case `"$ac_path_FGREP" --version 2>&1` in
+-*GNU*)
+- ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+-*)
+- ac_count=0
+- $as_echo_n 0123456789 >"conftest.in"
+- while :
+- do
+- cat "conftest.in" "conftest.in" >"conftest.tmp"
+- mv "conftest.tmp" "conftest.in"
+- cp "conftest.in" "conftest.nl"
+- $as_echo 'FGREP' >> "conftest.nl"
+- "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+- as_fn_arith $ac_count + 1 && ac_count=$as_val
+- if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+- # Best one so far, save it but keep looking for a better one
+- ac_cv_path_FGREP="$ac_path_FGREP"
+- ac_path_FGREP_max=$ac_count
+- fi
+- # 10*(2^10) chars as input seems more than enough
+- test $ac_count -gt 10 && break
+- done
+- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+-esac
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <stdlib.h>
++#include <stdarg.h>
++#include <string.h>
++#include <float.h>
+
+- $ac_path_FGREP_found && break 3
+- done
+- done
+- done
+-IFS=$as_save_IFS
+- if test -z "$ac_cv_path_FGREP"; then
+- as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+- fi
+-else
+- ac_cv_path_FGREP=$FGREP
+-fi
++int
++main ()
++{
+
+- fi
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ ac_cv_header_stdc=yes
++else
++ ac_cv_header_stdc=no
+ fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+-$as_echo "$ac_cv_path_FGREP" >&6; }
+- FGREP="$ac_cv_path_FGREP"
+-
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+-test -z "$GREP" && GREP=grep
++if test $ac_cv_header_stdc = yes; then
++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <string.h>
+
++_ACEOF
++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
++ $EGREP "memchr" >/dev/null 2>&1; then :
+
++else
++ ac_cv_header_stdc=no
++fi
++rm -f conftest*
+
++fi
+
++if test $ac_cv_header_stdc = yes; then
++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <stdlib.h>
+
++_ACEOF
++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
++ $EGREP "free" >/dev/null 2>&1; then :
+
++else
++ ac_cv_header_stdc=no
++fi
++rm -f conftest*
+
++fi
+
++if test $ac_cv_header_stdc = yes; then
++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
++ if test "$cross_compiling" = yes; then :
++ :
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <ctype.h>
++#include <stdlib.h>
++#if ((' ' & 0x0FF) == 0x020)
++# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
++# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
++#else
++# define ISLOWER(c) \
++ (('a' <= (c) && (c) <= 'i') \
++ || ('j' <= (c) && (c) <= 'r') \
++ || ('s' <= (c) && (c) <= 'z'))
++# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
++#endif
+
++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
++int
++main ()
++{
++ int i;
++ for (i = 0; i < 256; i++)
++ if (XOR (islower (i), ISLOWER (i))
++ || toupper (i) != TOUPPER (i))
++ return 2;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_run "$LINENO"; then :
+
++else
++ ac_cv_header_stdc=no
++fi
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++ conftest.$ac_objext conftest.beam conftest.$ac_ext
++fi
+
++fi
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
++$as_echo "$ac_cv_header_stdc" >&6; }
++if test $ac_cv_header_stdc = yes; then
+
++$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
++fi
+
++# On IRIX 5.3, sys/types and inttypes.h are conflicting.
++for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
++ inttypes.h stdint.h unistd.h
++do :
++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
++ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
++"
++if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
++ cat >>confdefs.h <<_ACEOF
++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
++_ACEOF
++
++fi
++
++done
++
++
++
++ ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
++if test "x$ac_cv_header_minix_config_h" = xyes; then :
++ MINIX=yes
++else
++ MINIX=
++fi
++
++
++ if test "$MINIX" = yes; then
+
++$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+
+
++$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
++
++
++$as_echo "#define _MINIX 1" >>confdefs.h
++
++ fi
++
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
++$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
++if ${ac_cv_safe_to_define___extensions__+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++# define __EXTENSIONS__ 1
++ $ac_includes_default
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ ac_cv_safe_to_define___extensions__=yes
++else
++ ac_cv_safe_to_define___extensions__=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
++$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
++ test $ac_cv_safe_to_define___extensions__ = yes &&
++ $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
++
++ $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
++
++ $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
++
++ $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
++
++ $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
++
++
++for ac_header in dlfcn.h
++do :
++ ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
++"
++if test "x$ac_cv_header_dlfcn_h" = xyes; then :
++ cat >>confdefs.h <<_ACEOF
++#define HAVE_DLFCN_H 1
++_ACEOF
++
++fi
++
++done
+
+
+ # Check whether --with-gnu-ld was given.
+@@ -6898,288 +7144,6 @@ func_munge_path_list ()
+ esac
+ }
+
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+-$as_echo_n "checking how to run the C preprocessor... " >&6; }
+-# On Suns, sometimes $CPP names a directory.
+-if test -n "$CPP" && test -d "$CPP"; then
+- CPP=
+-fi
+-if test -z "$CPP"; then
+- if ${ac_cv_prog_CPP+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- # Double quotes because CPP needs to be expanded
+- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+- do
+- ac_preproc_ok=false
+-for ac_c_preproc_warn_flag in '' yes
+-do
+- # Use a header file that comes with gcc, so configuring glibc
+- # with a fresh cross-compiler works.
+- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+- # <limits.h> exists even on freestanding compilers.
+- # On the NeXT, cc -E runs the code through the compiler's parser,
+- # not just through cpp. "Syntax error" is here to catch this case.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-#ifdef __STDC__
+-# include <limits.h>
+-#else
+-# include <assert.h>
+-#endif
+- Syntax error
+-_ACEOF
+-if ac_fn_c_try_cpp "$LINENO"; then :
+-
+-else
+- # Broken: fails on valid input.
+-continue
+-fi
+-rm -f conftest.err conftest.i conftest.$ac_ext
+-
+- # OK, works on sane cases. Now check whether nonexistent headers
+- # can be detected and how.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-#include <ac_nonexistent.h>
+-_ACEOF
+-if ac_fn_c_try_cpp "$LINENO"; then :
+- # Broken: success on invalid input.
+-continue
+-else
+- # Passes both tests.
+-ac_preproc_ok=:
+-break
+-fi
+-rm -f conftest.err conftest.i conftest.$ac_ext
+-
+-done
+-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+-rm -f conftest.i conftest.err conftest.$ac_ext
+-if $ac_preproc_ok; then :
+- break
+-fi
+-
+- done
+- ac_cv_prog_CPP=$CPP
+-
+-fi
+- CPP=$ac_cv_prog_CPP
+-else
+- ac_cv_prog_CPP=$CPP
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+-$as_echo "$CPP" >&6; }
+-ac_preproc_ok=false
+-for ac_c_preproc_warn_flag in '' yes
+-do
+- # Use a header file that comes with gcc, so configuring glibc
+- # with a fresh cross-compiler works.
+- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+- # <limits.h> exists even on freestanding compilers.
+- # On the NeXT, cc -E runs the code through the compiler's parser,
+- # not just through cpp. "Syntax error" is here to catch this case.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-#ifdef __STDC__
+-# include <limits.h>
+-#else
+-# include <assert.h>
+-#endif
+- Syntax error
+-_ACEOF
+-if ac_fn_c_try_cpp "$LINENO"; then :
+-
+-else
+- # Broken: fails on valid input.
+-continue
+-fi
+-rm -f conftest.err conftest.i conftest.$ac_ext
+-
+- # OK, works on sane cases. Now check whether nonexistent headers
+- # can be detected and how.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-#include <ac_nonexistent.h>
+-_ACEOF
+-if ac_fn_c_try_cpp "$LINENO"; then :
+- # Broken: success on invalid input.
+-continue
+-else
+- # Passes both tests.
+-ac_preproc_ok=:
+-break
+-fi
+-rm -f conftest.err conftest.i conftest.$ac_ext
+-
+-done
+-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+-rm -f conftest.i conftest.err conftest.$ac_ext
+-if $ac_preproc_ok; then :
+-
+-else
+- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+-See \`config.log' for more details" "$LINENO" 5; }
+-fi
+-
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+-
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+-$as_echo_n "checking for ANSI C header files... " >&6; }
+-if ${ac_cv_header_stdc+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-#include <stdlib.h>
+-#include <stdarg.h>
+-#include <string.h>
+-#include <float.h>
+-
+-int
+-main ()
+-{
+-
+- ;
+- return 0;
+-}
+-_ACEOF
+-if ac_fn_c_try_compile "$LINENO"; then :
+- ac_cv_header_stdc=yes
+-else
+- ac_cv_header_stdc=no
+-fi
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-
+-if test $ac_cv_header_stdc = yes; then
+- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-#include <string.h>
+-
+-_ACEOF
+-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+- $EGREP "memchr" >/dev/null 2>&1; then :
+-
+-else
+- ac_cv_header_stdc=no
+-fi
+-rm -f conftest*
+-
+-fi
+-
+-if test $ac_cv_header_stdc = yes; then
+- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-#include <stdlib.h>
+-
+-_ACEOF
+-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+- $EGREP "free" >/dev/null 2>&1; then :
+-
+-else
+- ac_cv_header_stdc=no
+-fi
+-rm -f conftest*
+-
+-fi
+-
+-if test $ac_cv_header_stdc = yes; then
+- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+- if test "$cross_compiling" = yes; then :
+- :
+-else
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-#include <ctype.h>
+-#include <stdlib.h>
+-#if ((' ' & 0x0FF) == 0x020)
+-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+-#else
+-# define ISLOWER(c) \
+- (('a' <= (c) && (c) <= 'i') \
+- || ('j' <= (c) && (c) <= 'r') \
+- || ('s' <= (c) && (c) <= 'z'))
+-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+-#endif
+-
+-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+-int
+-main ()
+-{
+- int i;
+- for (i = 0; i < 256; i++)
+- if (XOR (islower (i), ISLOWER (i))
+- || toupper (i) != TOUPPER (i))
+- return 2;
+- return 0;
+-}
+-_ACEOF
+-if ac_fn_c_try_run "$LINENO"; then :
+-
+-else
+- ac_cv_header_stdc=no
+-fi
+-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+- conftest.$ac_objext conftest.beam conftest.$ac_ext
+-fi
+-
+-fi
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+-$as_echo "$ac_cv_header_stdc" >&6; }
+-if test $ac_cv_header_stdc = yes; then
+-
+-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+-
+-fi
+-
+-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+- inttypes.h stdint.h unistd.h
+-do :
+- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+-"
+-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+- cat >>confdefs.h <<_ACEOF
+-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+-_ACEOF
+-
+-fi
+-
+-done
+-
+-
+-for ac_header in dlfcn.h
+-do :
+- ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+-"
+-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+- cat >>confdefs.h <<_ACEOF
+-#define HAVE_DLFCN_H 1
+-_ACEOF
+-
+-fi
+-
+-done
+-
+-
+-
+
+
+ # Set options
+--- a/src/config.h.in
++++ b/src/config.h.in
+@@ -207,6 +207,9 @@
+ /* Define to the m4 executable name. */
+ #undef M4
+
++/* Define to 1 if your C compiler doesn't accept -c and -o together. */
++#undef NO_MINUS_C_MINUS_O
++
+ /* Name of package */
+ #undef PACKAGE
+
+@@ -239,6 +242,28 @@
+ /* Define to 1 if you have the ANSI C header files. */
+ #undef STDC_HEADERS
+
++/* Enable extensions on AIX 3, Interix. */
++#ifndef _ALL_SOURCE
++# undef _ALL_SOURCE
++#endif
++/* Enable GNU extensions on systems that have them. */
++#ifndef _GNU_SOURCE
++# undef _GNU_SOURCE
++#endif
++/* Enable threading extensions on Solaris. */
++#ifndef _POSIX_PTHREAD_SEMANTICS
++# undef _POSIX_PTHREAD_SEMANTICS
++#endif
++/* Enable extensions on HP NonStop. */
++#ifndef _TANDEM_SOURCE
++# undef _TANDEM_SOURCE
++#endif
++/* Enable general extensions on Solaris. */
++#ifndef __EXTENSIONS__
++# undef __EXTENSIONS__
++#endif
++
++
+ /* Version number of package */
+ #undef VERSION
+
+@@ -246,6 +271,16 @@
+ `char[]'. */
+ #undef YYTEXT_POINTER
+
++/* Define to 1 if on MINIX. */
++#undef _MINIX
++
++/* Define to 2 if the system does not provide POSIX.1 features except with
++ this defined. */
++#undef _POSIX_1_SOURCE
++
++/* Define to 1 if you need to in order for `stat' and other things to work. */
++#undef _POSIX_SOURCE
++
+ /* Define to empty if `const' does not conform to ANSI C. */
+ #undef const
+
diff --git a/sys-devel/flex/files/flex-2.6.4-libobjdir.patch b/sys-devel/flex/files/flex-2.6.4-libobjdir.patch
new file mode 100644
index 00000000000..a652b9236b1
--- /dev/null
+++ b/sys-devel/flex/files/flex-2.6.4-libobjdir.patch
@@ -0,0 +1,26 @@
+https://github.com/westes/flex/commit/24e73c4446841eda8d4ea01298e887059e8c1472
+
+Bug: https://bugs.gentoo.org/625508
+
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -79,6 +79,8 @@ COMMON_SOURCES = \
+
+ LDADD = $(LIBOBJS) @LIBINTL@
+
++$(LIBOBJS): $(LIBOBJDIR)$(am__dirstamp)
++
+ include_HEADERS = \
+ FlexLexer.h
+
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -1688,6 +1688,8 @@ uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
+ @CROSS_TRUE@$(stage1flex_OBJECTS): CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
+ @CROSS_TRUE@$(stage1flex_OBJECTS): LDFLAGS=$(LDFLAGS_FOR_BUILD)
+
++$(LIBOBJS): $(LIBOBJDIR)$(am__dirstamp)
++
+ skel.c: flex.skl mkskel.sh flexint.h tables_shared.h tables_shared.c
+ $(SHELL) $(srcdir)/mkskel.sh $(srcdir) $(m4) $(VERSION) > $@.tmp
+ mv $@.tmp $@
diff --git a/sys-devel/flex/flex-2.6.4-r1.ebuild b/sys-devel/flex/flex-2.6.4-r1.ebuild
new file mode 100644
index 00000000000..b221d35914b
--- /dev/null
+++ b/sys-devel/flex/flex-2.6.4-r1.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+inherit eutils flag-o-matic libtool multilib-minimal
+
+DESCRIPTION="The Fast Lexical Analyzer"
+HOMEPAGE="https://flex.sourceforge.net/ https://github.com/westes/flex"
+SRC_URI="https://github.com/westes/${PN}/releases/download/v${PV}/${P}.tar.gz"
+
+LICENSE="FLEX"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="nls static test"
+
+# We want bison explicitly and not yacc in general #381273
+RDEPEND="sys-devel/m4"
+DEPEND="${RDEPEND}
+ app-arch/xz-utils
+ nls? ( sys-devel/gettext )
+ test? ( sys-devel/bison )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.6.4-libobjdir.patch
+ "${FILESDIR}"/${PN}-2.6.4-fix-build-with-glibc2.6+.patch
+)
+
+src_prepare() {
+ default
+
+ # Disable running in the tests/ subdir as it has a bunch of built sources
+ # that cannot be made conditional (automake limitation). #568842
+ if ! use test ; then
+ sed -i \
+ -e '/^SUBDIRS =/,/^$/{/tests/d}' \
+ Makefile.in || die
+ fi
+ elibtoolize # Prefix always needs this
+}
+
+src_configure() {
+ use static && append-ldflags -static
+
+ multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+ # Do not install shared libs #503522
+ ECONF_SOURCE=${S} \
+ econf \
+ --disable-shared \
+ $(use_enable nls) \
+ --docdir='$(datarootdir)/doc/'${PF}
+}
+
+multilib_src_compile() {
+ if multilib_is_native_abi; then
+ default
+ else
+ cd src || die
+ emake -f Makefile -f - lib <<< 'lib: $(lib_LTLIBRARIES)'
+ fi
+}
+
+multilib_src_test() {
+ multilib_is_native_abi && emake check
+}
+
+multilib_src_install() {
+ if multilib_is_native_abi; then
+ default
+ else
+ cd src || die
+ emake DESTDIR="${D}" install-libLTLIBRARIES install-includeHEADERS
+ fi
+}
+
+multilib_src_install_all() {
+ einstalldocs
+ dodoc ONEWS
+ prune_libtool_files --all
+ rm "${ED}"/usr/share/doc/${PF}/COPYING || die
+ dosym flex /usr/bin/lex
+}