Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 30 Sep 2017 23:56:02 -0700
From:      Mark Millard <markmi@dsl-only.net>
To:        FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>, FreeBSD Toolchain <freebsd-toolchain@freebsd.org>, FreeBSD Ports <freebsd-ports@freebsd.org>, Gerald Pfeifer <gerald@FreeBSD.org>
Subject:   Re: head -r324071 system clang 5 based powerpc64 building ports: lang/gcc7 messed up by a matching name vec_step? [renaming in tree-vect-loop.c avoids the issue]
Message-ID:  <A0D5ADDC-073F-4966-B105-A60B871DB83B@dsl-only.net>
In-Reply-To: <750985A4-754C-402A-A5D2-5B48738598CD@dsl-only.net>
References:  <47941770-2A08-4524-8BCC-3FE1D2F3B7F2@dsl-only.net> <54D59906-80CE-4936-B5FD-BCCD87A09F76@dsl-only.net> <750985A4-754C-402A-A5D2-5B48738598CD@dsl-only.net>

next in thread | previous in thread | raw e-mail | index | archive | help
[If work/gcc-7.2.0/gcc/tree-vect-loop.c avoids the
name vec_step then it avoids the conflicting use
for altivec support in the powerpc64 context. I
used vec_step_renamed as the name in
work/gcc-7.2.0/gcc/tree-vect-loop.c instead.
Similarly for devel/powerpc64-gcc and likely
other variants.]

On 2017-Sep-29, at 12:14 PM, Mark Millard <markmi@dsl-only.net> wrote:

> Summary of later additions:
>=20
> devel/powerpc64-gcc has the same problem as gcc7
> in this clang-based powerpc64.
>=20
> My note about using gcc 4.2.1 for the kernel
> build was wrong. (My 32-bit powerpc builds
> are that way, not the powerpc64 ones.)
>=20
> On 2017-Sep-29, at 1:51 AM, Mark Millard <markmi at dsl-only.net> =
wrote:
>=20
>> [Looks like gcc7 might be causing its own problem
>> via a vec_step macro name in its altivec.h .]
>>=20
>> On 2017-Sep-29, at 1:14 AM, Mark Millard <markmi at dsl-only.net> =
wrote:
>>=20
>>> I attempted a poudriere based build of some
>>> ports and the gcc7 build involved failed
>>> with the following sorts of notices:
>=20
> devel/powerpc64-gcc has the same problem as gcc7
> in this clang-based powerpc64
>=20
>>> =
/wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:3835:27: =
error: expected unqualified-id
>>> tree new_vec, vec_init, vec_step, t;
>>>                        ^
>>> =
/wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:3835:26: =
error: expected ';' at end of declaration
>>> tree new_vec, vec_init, vec_step, t;
>>>                       ^
>>>                       ;
>>> =
/wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:3983:3: =
error: use of undeclared identifier 't'
>>> t =3D unshare_expr (new_name);
>>> ^
>>> =
/wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:3988:49: =
error: use of undeclared identifier 't'
>>> new_vec =3D build_vector_from_val (stepvectype, t);
>>>                                              ^
>>> =
/wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:3989:12: =
error: expected expression
>>> vec_step =3D vect_init_vector (iv_phi, new_vec, stepvectype, NULL);
>>>         ^
>>> =
/wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:4011:75: =
error: expected expression
>>> new_stmt =3D gimple_build_assign (vec_dest, PLUS_EXPR, induc_def, =
vec_step);
>>>                                                                      =
  ^
>>> =
/wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:4048:7: =
error: use of undeclared identifier 't'
>>>    t =3D unshare_expr (new_name);
>>>    ^
>>> =
/wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:4051:53: =
error: use of undeclared identifier 't'
>>>    new_vec =3D build_vector_from_val (stepvectype, t);
>>>                                                  ^
>>> =
/wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:4052:16: =
error: expected expression
>>>    vec_step =3D vect_init_vector (iv_phi, new_vec, stepvectype, =
NULL);
>>>             ^
>>> =
/wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:4060:25: =
error: expected expression
>>>                                        vec_def, vec_step);
>>>                                                         ^
>>> =
/wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:6327:9: =
error: expected unqualified-id
>>>        tree vec_step =3D build_vector_from_val =
(cr_index_vector_type, step);
>>>             ^
>>> =
/wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:6333:36: =
error: expected expression
>>>        create_iv (series_vect, vec_step, NULL_TREE, loop, &incr_gsi,
>>>                                        ^
>>> 50 warnings and 12 errors generated.
>>> gmake[3]: *** [Makefile:1099: tree-vect-loop.o] Error 1
>>> gmake[3]: *** Waiting for unfinished jobs....
>>> 42 warnings generated.
>>> 51 warnings generated.
>>> 50 warnings generated.
>>> rm gfortran.pod gcc.pod
>>> gmake[3]: Leaving directory =
'/wrkdirs/usr/ports/lang/gcc7/work/.build/gcc'
>>> gmake[2]: *** [Makefile:4225: all-gcc] Error 2
>>> gmake[2]: Leaving directory =
'/wrkdirs/usr/ports/lang/gcc7/work/.build'
>>> gmake[1]: *** [Makefile:893: all] Error 2
>>> gmake[1]: Leaving directory =
'/wrkdirs/usr/ports/lang/gcc7/work/.build'
>>> =3D=3D=3D> Compilation failed unexpectedly.
>>> Try to set MAKE_JOBS_UNSAFE=3Dyes and rebuild before reporting the =
failure to
>>> the maintainer.
>>> *** Error code 1
>>>=20
>>> Stop.
>>> make: stopped in /usr/ports/lang/gcc7
>>> =3D>> Cleaning up wrkdir
>>> =3D=3D=3D>  Cleaning for gcc7-7.2.0_1
>>> build of lang/gcc7 | gcc7-7.2.0_1 ended at Fri Sep 29 00:22:00 PDT =
2017
>>> build time: 00:29:27
>>> !!! build failure encountered !!!
>>=20
>> Turns out that there is:
>>=20
>> # grep -r "\<vec_step\>" ~/poudriere_failure/lang_gcc7/ | more
>> . . .
>> =
/root/poudriere_failure/lang_gcc7/work/gcc-7.2.0/gcc/config/rs6000/altivec=
.h:/* Given the vec_step of a type, return the corresponding bool type.  =
*/
>> =
/root/poudriere_failure/lang_gcc7/work/gcc-7.2.0/gcc/config/rs6000/altivec=
.h:typename __altivec_bool_ret <vec_step (T)>::__ret \
>> =
/root/poudriere_failure/lang_gcc7/work/gcc-7.2.0/gcc/config/rs6000/altivec=
.h:   to #define vec_step to __builtin_vec_step.  */
>> =
/root/poudriere_failure/lang_gcc7/work/gcc-7.2.0/gcc/config/rs6000/altivec=
.h:#define vec_step(x) __builtin_vec_step (* (__typeof__ (x) *) 0)
>> . . .
>>=20
>> ( config/s390/vecintrin.h has something similar.)

It turns out that avoiding the non-global identifier
vec_step allows getting past this issue. For lang/gcc7 :

# more /usr/ports/lang/gcc7/files/patch-gcc_tree-vect-loop.c=20
--- gcc/tree-vect-loop.c.orig   2017-03-28 15:35:56 UTC
+++ gcc/tree-vect-loop.c
@@ -3832,7 +3832,7 @@ get_initial_def_for_induction (gimple *iv_phi)
   edge pe =3D loop_preheader_edge (loop);
   struct loop *iv_loop;
   basic_block new_bb;
-  tree new_vec, vec_init, vec_step, t;
+  tree new_vec, vec_init, vec_step_renamed, t;
   tree new_name;
   gimple *new_stmt;
   gphi *induction_phi;
@@ -3986,7 +3986,7 @@ get_initial_def_for_induction (gimple *iv_phi)
   stepvectype =3D get_vectype_for_scalar_type (TREE_TYPE (new_name));
   gcc_assert (stepvectype);
   new_vec =3D build_vector_from_val (stepvectype, t);
-  vec_step =3D vect_init_vector (iv_phi, new_vec, stepvectype, NULL);
+  vec_step_renamed =3D vect_init_vector (iv_phi, new_vec, stepvectype, =
NULL);
=20
=20
   /* Create the following def-use cycle:
@@ -4008,7 +4008,7 @@ get_initial_def_for_induction (gimple *iv_phi)
   induc_def =3D PHI_RESULT (induction_phi);
=20
   /* Create the iv update inside the loop  */
-  new_stmt =3D gimple_build_assign (vec_dest, PLUS_EXPR, induc_def, =
vec_step);
+  new_stmt =3D gimple_build_assign (vec_dest, PLUS_EXPR, induc_def, =
vec_step_renamed);
   vec_def =3D make_ssa_name (vec_dest, new_stmt);
   gimple_assign_set_lhs (new_stmt, vec_def);
   gsi_insert_before (&si, new_stmt, GSI_SAME_STMT);
@@ -4049,7 +4049,7 @@ get_initial_def_for_induction (gimple *iv_phi)
       gcc_assert (CONSTANT_CLASS_P (new_name)
                  || TREE_CODE (new_name) =3D=3D SSA_NAME);
       new_vec =3D build_vector_from_val (stepvectype, t);
-      vec_step =3D vect_init_vector (iv_phi, new_vec, stepvectype, =
NULL);
+      vec_step_renamed =3D vect_init_vector (iv_phi, new_vec, =
stepvectype, NULL);
=20
       vec_def =3D induc_def;
       prev_stmt_vinfo =3D vinfo_for_stmt (induction_phi);
@@ -4057,7 +4057,7 @@ get_initial_def_for_induction (gimple *iv_phi)
        {
          /* vec_i =3D vec_prev + vec_step  */
          new_stmt =3D gimple_build_assign (vec_dest, PLUS_EXPR,
-                                         vec_def, vec_step);
+                                         vec_def, vec_step_renamed);
          vec_def =3D make_ssa_name (vec_dest, new_stmt);
          gimple_assign_set_lhs (new_stmt, vec_def);
 =20
@@ -6324,13 +6324,13 @@ vectorizable_reduction (gimple *stmt, =
gimple_stmt_iter
=20
          /* Create a vector of the step value.  */
          tree step =3D build_int_cst (cr_index_scalar_type, =
nunits_out);
-         tree vec_step =3D build_vector_from_val (cr_index_vector_type, =
step);
+         tree vec_step_renamed =3D build_vector_from_val =
(cr_index_vector_type, step);
=20
          /* Create an induction variable.  */
          gimple_stmt_iterator incr_gsi;
          bool insert_after;
          standard_iv_increment_position (loop, &incr_gsi, =
&insert_after);
-         create_iv (series_vect, vec_step, NULL_TREE, loop, &incr_gsi,
+         create_iv (series_vect, vec_step_renamed, NULL_TREE, loop, =
&incr_gsi,
                     insert_after, &indx_before_incr, &indx_after_incr);
=20
          /* Next create a new phi node vector (NEW_PHI_TREE) which =
starts


For devel/powerpc64-gcc:

# more /usr/ports/devel/powerpc64-gcc/files/patch-gcc_tree-vect-loop.c
--- gcc/tree-vect-loop.c.orig   2016-06-01 16:06:29 UTC
+++ gcc/tree-vect-loop.c
@@ -3702,7 +3702,7 @@ get_initial_def_for_induction (gimple *iv_phi)
   edge pe =3D loop_preheader_edge (loop);
   struct loop *iv_loop;
   basic_block new_bb;
-  tree new_vec, vec_init, vec_step, t;
+  tree new_vec, vec_init, vec_step_renamed, t;
   tree new_name;
   gimple *new_stmt;
   gphi *induction_phi;
@@ -3856,7 +3856,7 @@ get_initial_def_for_induction (gimple *iv_phi)
   stepvectype =3D get_vectype_for_scalar_type (TREE_TYPE (new_name));
   gcc_assert (stepvectype);
   new_vec =3D build_vector_from_val (stepvectype, t);
-  vec_step =3D vect_init_vector (iv_phi, new_vec, stepvectype, NULL);
+  vec_step_renamed =3D vect_init_vector (iv_phi, new_vec, stepvectype, =
NULL);
=20
=20
   /* Create the following def-use cycle:
@@ -3878,7 +3878,7 @@ get_initial_def_for_induction (gimple *iv_phi)
   induc_def =3D PHI_RESULT (induction_phi);
=20
   /* Create the iv update inside the loop  */
-  new_stmt =3D gimple_build_assign (vec_dest, PLUS_EXPR, induc_def, =
vec_step);
+  new_stmt =3D gimple_build_assign (vec_dest, PLUS_EXPR, induc_def, =
vec_step_renamed);
   vec_def =3D make_ssa_name (vec_dest, new_stmt);
   gimple_assign_set_lhs (new_stmt, vec_def);
   gsi_insert_before (&si, new_stmt, GSI_SAME_STMT);
@@ -3919,7 +3919,7 @@ get_initial_def_for_induction (gimple *iv_phi)
       gcc_assert (CONSTANT_CLASS_P (new_name)
                  || TREE_CODE (new_name) =3D=3D SSA_NAME);
       new_vec =3D build_vector_from_val (stepvectype, t);
-      vec_step =3D vect_init_vector (iv_phi, new_vec, stepvectype, =
NULL);
+      vec_step_renamed =3D vect_init_vector (iv_phi, new_vec, =
stepvectype, NULL);
=20
       vec_def =3D induc_def;
       prev_stmt_vinfo =3D vinfo_for_stmt (induction_phi);
@@ -3927,7 +3927,7 @@ get_initial_def_for_induction (gimple *iv_phi)
        {
          /* vec_i =3D vec_prev + vec_step  */
          new_stmt =3D gimple_build_assign (vec_dest, PLUS_EXPR,
-                                         vec_def, vec_step);
+                                         vec_def, vec_step_renamed);
          vec_def =3D make_ssa_name (vec_dest, new_stmt);
          gimple_assign_set_lhs (new_stmt, vec_def);
 =20
@@ -6129,13 +6129,13 @@ vectorizable_reduction (gimple *stmt, =
gimple_stmt_iter
=20
          /* Create a vector of the step value.  */
          tree step =3D build_int_cst (cr_index_scalar_type, =
nunits_out);
-         tree vec_step =3D build_vector_from_val (cr_index_vector_type, =
step);
+         tree vec_step_renamed =3D build_vector_from_val =
(cr_index_vector_type, step);
=20
          /* Create an induction variable.  */
          gimple_stmt_iterator incr_gsi;
          bool insert_after;
          standard_iv_increment_position (loop, &incr_gsi, =
&insert_after);
-         create_iv (series_vect, vec_step, NULL_TREE, loop, &incr_gsi,
+         create_iv (series_vect, vec_step_renamed, NULL_TREE, loop, =
&incr_gsi,
                     insert_after, &indx_before_incr, &indx_after_incr);
=20
          /* Next create a new phi node vector (NEW_PHI_TREE) which =
starts



>>> FYI:
>>>=20
>>> # grep -r "\<vec_step\>" /usr/src/* | more
>>> /usr/src/contrib/llvm/tools/clang/lib/AST/ASTDumper.cpp:    OS << " =
vec_step";
>>> /usr/src/contrib/llvm/tools/clang/lib/AST/StmtPrinter.cpp:    OS << =
"vec_step";
>>> /usr/src/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp:/// =
VisitUnaryExprOrTypeTraitExpr - Evaluate a sizeof, alignof or vec_step =
with
>>> /usr/src/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp:      // =
The vec_step built-in functions that take a 3-component
>>> /usr/src/contrib/llvm/tools/clang/lib/AST/ItaniumMangle.cpp:         =
                            "cannot yet mangle vec_step expression");
>>> /usr/src/contrib/llvm/tools/clang/lib/Headers/opencl-c.h: * by =
vec_step(gentypem). The shuffle mask operand
>>> /usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp:  case =
tok::kw_vec_step:   // unary-expression: OpenCL 'vec_step' expression
>>> /usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp:/// =
vec_step and we are at the start of an expression or a parenthesized
>>> /usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp:/// =
[OpenCL 1.1 6.11.12] vec_step built-in function:
>>> /usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp:///        =
   vec_step ( expressions )
>>> /usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp:///        =
   vec_step ( type-name )
>>> /usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp:         =
"Not a typeof/sizeof/alignof/vec_step expression!");
>>> /usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp:         =
"Not a sizeof/alignof/vec_step expression!");
>>> /usr/src/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp:  // [OpenCL =
1.1 6.11.12] "The vec_step built-in function takes a built-in
>>> /usr/src/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h:  /// =
\brief Build a new sizeof, alignof or vec_step expression with a
>>> /usr/src/contrib/llvm/tools/clang/include/clang/AST/Expr.h:/// =
vec_step (OpenCL 1.1 6.11.12).
>>> =
/usr/src/contrib/llvm/tools/clang/include/clang/ASTMatchers/ASTMatchers.h:=
/// \brief Matches sizeof (C99), alignof (C++11) and vec_step (OpenCL)
>>> =
/usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.=
td:  "invalid application of '%select{sizeof|alignof|vec_step}0' to a "
>>> =
/usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.=
td:  "invalid application of '%select{sizeof|alignof|vec_step}0' to a =
void "
>>> =
/usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.=
td:  "invalid application of =
'%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align}0' to =
a void type">;
>>> =
/usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.=
td:  "invalid application of =
'%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align}0' to =
an "
>>> =
/usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.=
td:  "invalid application of =
'%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align}0' to =
a "
>>> =
/usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.=
td:  "'vec_step' requires built-in scalar or vector type, %0 invalid">;
>>> =
/usr/src/contrib/llvm/tools/clang/include/clang/Basic/TokenKinds.def:KEYWO=
RD(vec_step                    , KEYOPENCL|KEYALTIVEC|KEYZVECTOR)
>>> /usr/src/contrib/gcc/config/rs6000/altivec.h:/* Given the vec_step =
of a type, return the corresponding bool type.  */
>>> /usr/src/contrib/gcc/config/rs6000/altivec.h:typename =
__altivec_bool_ret <vec_step (T)>::__ret \
>>> /usr/src/contrib/gcc/config/rs6000/altivec.h:   to #define vec_step =
to __builtin_vec_step.  */
>>> /usr/src/contrib/gcc/config/rs6000/altivec.h:#define vec_step(x) =
__builtin_vec_step (* (__typeof__ (x) *) 0)
>>> /usr/src/contrib/gcc/ChangeLog-2002:    * config/rs6000/altivec.h =
(vec_step): Remove extraneous
>>> /usr/src/contrib/gcc/ChangeLog-2002:    (vec_step): Implement for =
C++.
>>>=20
>>>=20
>>> Context:
>>>=20
>>> # uname -apKU
>>> FreeBSD FBSDG5L 12.0-CURRENT FreeBSD 12.0-CURRENT  r324071M  powerpc =
powerpc64 1200047 1200047
>>>=20
>>> Built via amd64 -> powerpc64 cross build, using clang
>>> for buildworld:
>>>=20
>>> [Note: The kernel was built with gcc 4.2.1 .]
>=20
> Wrong: I was thinking of the powerpc (32- bit) build
> when I wrote that. powerpc64 is a pure clang based build.
>=20
>>>=20
>>> # poudriere jail -l
>>> JAILNAME      VERSION      ARCH              METHOD TIMESTAMP        =
   PATH
>>> FBSDpowerpc64 12.0-CURRENT powerpc.powerpc64 null   2017-09-28 =
20:55:01 /usr/obj/DESTDIRs/clang-powerpc64-installworld_altbinutils-poud
>>>=20
>>> (It is using /usr/src .)
>>>=20
>>> # poudriere ports -l
>>> PORTSTREE METHOD TIMESTAMP           PATH
>>> default   null   2017-09-28 17:04:57 /usr/ports
>>>=20
>>>=20
>>> # more =
~/src.configs/src.conf.powerpc64-clang_altbinutils-bootstrap.amd64-host=20=

>>> TO_TYPE=3Dpowerpc64
>>> TOOLS_TO_TYPE=3D${TO_TYPE}
>>> VERSION_CONTEXT=3D12.0
>>> #
>>> KERNCONF=3DGENERIC64vtsc-NODBG
>>> TARGET=3Dpowerpc
>>> .if ${.MAKE.LEVEL} =3D=3D 0
>>> TARGET_ARCH=3D${TO_TYPE}
>>> .export TARGET_ARCH
>>> .endif
>>> #
>>> WITH_CROSS_COMPILER=3D
>>> WITHOUT_SYSTEM_COMPILER=3D
>>> #
>>> WITH_LIBCPLUSPLUS=3D
>>> WITHOUT_BINUTILS_BOOTSTRAP=3D
>>> WITH_ELFTOOLCHAIN_BOOTSTRAP=3D
>>> WITH_CLANG_BOOTSTRAP=3D
>>> WITH_CLANG=3D
>>> WITH_CLANG_IS_CC=3D
>>> WITH_CLANG_FULL=3D
>>> WITH_CLANG_EXTRAS=3D
>>> WITHOUT_LLD_BOOTSTRAP=3D
>>> WITH_LLD=3D
>>> WITHOUT_LLD_IS_LD=3D
>>> WITH_LLDB=3D
>>> #
>>> WITH_BOOT=3D
>>> WITH_LIB32=3D
>>> #
>>> WITHOUT_GCC_BOOTSTRAP=3D
>>> WITHOUT_GCC=3D
>>> WITHOUT_GCC_IS_CC=3D
>>> WITHOUT_GNUCXX=3D
>>> #
>>> NO_WERROR=3D
>>> MALLOC_PRODUCTION=3D
>>> #
>>> # Avoid converts between pointers to integer types with different =
sign [-Werror,-Wpointer-sign]
>>> # and such from blocking the build.
>>> WERROR=3D
>>> #
>>> WITH_REPRODUCIBLE_BUILD=3D
>>> WITH_DEBUG_FILES=3D
>>> #
>>> #
>>> # For TO (so-called "cross") stages . . .
>>> # So-called-cross via ${TO_TYPE}-xtoolchain-gcc/${TO_TYPE}-gcc. . .
>>> # TOOLS_TO_TYPE based on ${TO_TYPE}-xtoolchain-gcc related binutils. =
. .
>>> #
>>> CROSS_BINUTILS_PREFIX=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/
>>> .if ${.MAKE.LEVEL} =3D=3D 0
>>> #
>>> # Note: The WITH_CROSS_COMPILER picks up the CROSS_BINUTILS_PREFIX
>>> #       binding automatically.
>>> #
>>> XAS=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/as
>>> XAR=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ar
>>> XNM=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/nm
>>> XOBJCOPY=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/objcopy
>>> XOBJDUMP=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/objdump
>>> XRANLIB=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ranlib
>>> XSIZE=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/size
>>> #NO-SUCH: XSTRINGS=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/strings
>>> XSTRINGS=3D/usr/local/bin/${TOOLS_TO_TYPE}-freebsd-strings
>>> .export XAS
>>> .export XAR
>>> .export XNM
>>> .export XOBJCOPY
>>> .export XOBJDUMP
>>> .export XRANLIB
>>> .export XSIZE
>>> .export XSTRINGS
>>> XLD=3D/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ld
>>> .export XLD
>>> .endif
>>>=20
>>> # svnlite status /usr/src/ | sort
>>> ?       /usr/src/sys/amd64/conf/GENERIC-DBG
>>> ?       /usr/src/sys/amd64/conf/GENERIC-NODBG
>>> ?       /usr/src/sys/arm/conf/GENERIC-DBG
>>> ?       /usr/src/sys/arm/conf/GENERIC-NODBG
>>> ?       /usr/src/sys/arm64/conf/GENERIC-DBG
>>> ?       /usr/src/sys/arm64/conf/GENERIC-NODBG
>>> ?       /usr/src/sys/powerpc/conf/GENERIC64vtsc-DBG
>>> ?       /usr/src/sys/powerpc/conf/GENERIC64vtsc-NODBG
>>> ?       /usr/src/sys/powerpc/conf/GENERICvtsc-DBG
>>> ?       /usr/src/sys/powerpc/conf/GENERICvtsc-NODBG
>>> M       =
/usr/src/contrib/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
>>> M       /usr/src/contrib/llvm/tools/lld/ELF/Arch/PPC64.cpp
>>> M       /usr/src/crypto/openssl/crypto/armcap.c
>>> M       /usr/src/lib/Makefile
>>> M       /usr/src/lib/libkvm/kvm_powerpc.c
>>> M       /usr/src/lib/libkvm/kvm_private.c
>>> M       /usr/src/sys/arm64/arm64/identcpu.c
>>> M       /usr/src/sys/arm64/arm64/mp_machdep.c
>>> M       /usr/src/sys/boot/ofw/Makefile.inc
>>> M       /usr/src/sys/boot/powerpc/Makefile.inc
>>> M       /usr/src/sys/boot/powerpc/boot1.chrp/Makefile
>>> M       /usr/src/sys/boot/powerpc/kboot/Makefile
>>> M       /usr/src/sys/boot/uboot/Makefile.inc
>>> M       /usr/src/sys/conf/kmod.mk
>>> M       /usr/src/sys/conf/ldscript.powerpc
>>> M       /usr/src/sys/ddb/db_main.c
>>> M       /usr/src/sys/ddb/db_script.c
>>> M       /usr/src/sys/kern/subr_pcpu.c
>>> M       /usr/src/sys/powerpc/aim/mmu_oea64.c
>>> M       /usr/src/sys/powerpc/ofw/ofw_machdep.c
>>> M       /usr/src/sys/powerpc/powerpc/interrupt.c
>>> M       /usr/src/sys/powerpc/powerpc/mp_machdep.c
>>> M       /usr/src/sys/powerpc/powerpc/trap.c
>>>=20
>>>=20
>>>=20
>>> # svnlite info /usr/ports/ | grep "Re[plv]"
>>> Relative URL: ^/head
>>> Repository Root: svn://svn0.us-west.freebsd.org/ports
>>> Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5
>>> Revision: 450478
>>> Last Changed Rev: 450478
>>>=20
>>> # svnlite status /usr/ports
>>> M       /usr/ports/Mk/bsd.port.mk
>>> M       /usr/ports/Mk/bsd.qt.mk
>>> M       /usr/ports/audio/liba52/Makefile
>>> M       /usr/ports/base/gcc/Makefile
>>> M       /usr/ports/base/gcc/distinfo
>>> M       /usr/ports/base/gcc/pkg-plist
>>> M       /usr/ports/devel/libunwind/Makefile
>>> ?       =
/usr/ports/devel/qt5/files/extrapatch-config.tests_unix_arch.test
>>> M       /usr/ports/lang/gcc7/Makefile
>>> M       /usr/ports/sysutils/cdrdao/Makefile
>>> ?       =
/usr/ports/www/qt5-webkit/files/patch-Source_JavaScriptCore_assembler_ARMA=
ssembler.h
>>> ?       =
/usr/ports/www/qt5-webkit/files/patch-Source_JavaScriptCore_assembler_ARMv=
7Assembler.h
>>> ?       =
/usr/ports/www/qt5-webkit/files/patch-Source_JavaScriptCore_offlineasm_arm=
.rb
>>> ?       =
/usr/ports/www/qt5-webkit/files/patch-Source_WTF_wtf_Platform.h
>>> ?       =
/usr/ports/www/qt5-webkit/files/patch-Source_WebCore_platform_graphics_cpu=
_arm_filters_FELightingNEON.cpp
>>> ?       =
/usr/ports/www/qt5-webkit/files/patch-Source_bmalloc_bmalloc_BPlatform.h
>>>=20
>>>=20
>>> # more /usr/local/etc/poudriere.d/make.conf
>>> WANT_QT_VERBOSE_CONFIGURE=3D1
>>> #
>>> DEFAULT_VERSIONS+=3Dperl5=3D5.24 gcc=3D7
>>> #
>>> # =46rom a local /usr/ports/Mk/bsd.port.mk extension:
>>> ALLOW_OPTIMIZATIONS_FOR_WITH_DEBUG=3D
>>> #
>>> .if ${.CURDIR:M*/devel/llvm*}
>>> #WITH_DEBUG=3D
>>> .elif ${.CURDIR:M*/www/qt5-webkit*}
>>> #WITH_DEBUG=3D
>>> .else
>>> WITH_DEBUG=3D
>>> .endif
>>> MALLOC_PRODUCTION=3D
>>> #
>>> # The system clang for TARGET_ARCH=3Dpowerpc64
>>> # and the system binutils (such as ld) do not
>>> # (yet?) mix well. So for ports use the
>>> # devel/binutils ones. (A problem before
>>> # they are already in place!)
>>> #USE_BINUTILS=3D
>>> CFLAGS+=3D-B${LOCALBASE}/bin/
>>> CXXFLAGS+=3D-B${LOCALBASE}/bin/
>>> CPPFLAGS+=3D-B${LOCALBASE}/bin/
>>>=20
>>>=20
>>> # svnlite diff /usr/ports/Mk/bsd.port.mk
>>> Index: /usr/ports/Mk/bsd.port.mk
>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>>> --- /usr/ports/Mk/bsd.port.mk	(revision 450478)
>>> +++ /usr/ports/Mk/bsd.port.mk	(working copy)
>>> @@ -1130,12 +1130,12 @@
>>>=20
>>> # Get the operating system type
>>> .if !defined(OPSYS)
>>> -OPSYS!=3D	${UNAME} -s
>>> +OPSYS!=3D	echo FreeBSD
>>> .endif
>>> _EXPORTED_VARS+=3D	OPSYS
>>>=20
>>> .if !defined(_OSRELEASE)
>>> -_OSRELEASE!=3D	${UNAME} -r
>>> +_OSRELEASE!=3D	echo 12.0-CURRENT
>>> .endif
>>> _EXPORTED_VARS+=3D	_OSRELEASE
>>>=20
>>> @@ -1651,7 +1651,11 @@
>>> STRIP_CMD=3D	${TRUE}
>>> .endif
>>> DEBUG_FLAGS?=3D	-g
>>> +.if defined(ALLOW_OPTIMIZATIONS_FOR_WITH_DEBUG)
>>> +CFLAGS:=3D		${CFLAGS} ${DEBUG_FLAGS}
>>> +.else
>>> CFLAGS:=3D		${CFLAGS:N-O*:N-fno-strict*} ${DEBUG_FLAGS}
>>> +.endif
>>> .if defined(INSTALL_TARGET)
>>> INSTALL_TARGET:=3D	${INSTALL_TARGET:S/^install-strip$/install/g}
>>> .endif
>>>=20
>>>=20
>>> (Note: I've had problems with some ${UNAME} use returning empty =
strings,
>>> which is why I've used echo as a replacement in places. The real =
point
>>> for the above is the ALLOW_OPTIMIZATIONS_FOR_WITH_DEBUG use.)


=3D=3D=3D
Mark Millard
markmi at dsl-only.net







Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?A0D5ADDC-073F-4966-B105-A60B871DB83B>