From owner-freebsd-toolchain@freebsd.org Wed Aug 7 04:23:02 2019 Return-Path: Delivered-To: freebsd-toolchain@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 28A10BDB15 for ; Wed, 7 Aug 2019 04:23:02 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic308-8.consmr.mail.gq1.yahoo.com (sonic308-8.consmr.mail.gq1.yahoo.com [98.137.68.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 463JJh5f2nz4CKY for ; Wed, 7 Aug 2019 04:23:00 +0000 (UTC) (envelope-from marklmi@yahoo.com) X-YMail-OSG: FjP4J4sVM1mm3j6A6c95tiyVL1uxttCYYwjntHFmkwCWnzKrX29YOdAY3._2stU BAqwM_HRSmDmMPK6T8ZQUmlvNHJ_X0ZvR90nsAwqRgpbRN5xn4luyIdSkvlC1dOfBSpQrujjubs_ GiBMPEfd7siV_eKsKNZlELFp_r0v_8MKrNULSTq9BMN65eObv5JX54zVsmCXZM8LIosjxPcqLfXc 7ztPuxOIY4v8UEw36.soyzK07N763AVj1CaRlUTh48f_imiCpiSPyJSyRzH4JMtnGmYMIth7kYIk _Loh7j9gbURwNMYo1ExaR4qNUcHkYczWz2t59PWv6QN91JW1YfTr4SEiJmrM2ySIKgrQZ80uBa.r cDImkWVX5EwVimIMAtJLYrXzkk.jH9O7qQtZb0xlNNiwN7yTwjX__XRyGuoKma8XsVLG9XRobWBq X78U5jHig_7gfA0e56YT6Oe2Vtz5ITEmt9vaBwuQ0XtAN0AHspi3NLjbzGQxtxQrqzUIpogDwpA0 GBlanMPPQ.OK1qvAm_oVYsVhJuoVLwInYdVu5gXVUvro3bPu3H5TKg99p_sEuviUTsLfYJdtw4Hu PQBjibirg5CFMHwxnnJx5oBWYE5_OIMNfxxpMhtkOKUpm4OwcMg2.XUXK45WR2dpNZgMcN2qgL9w Octnrq7u0MMnsnOjsgo7QkrBvC0EiIqA7XcKEUKsGtkK9CNCQEvL8nRWMIIos1o4iZk9D1GH4iIO pQKba9RJlWRriYp6XTdg0qy4AF651LzP0YKjkQXq5itLsBQ_WobQfcjl1djQ7A6j5UlpWTMerZlG 24LDeO3bqyseuK3rEglSX6cNsiNFeuWg6B.jzzYh.FiPSCYeERDd_JfiCg1OomwYDnUCuldWmCFn askGlExSoE8MSfIxmhWp6jbfnzkrnjAfMCaat7CE.rfCz8Ub0YQKJ3IrZFAfm4iQUFeUoVQDdUCq z0RUavi3E8aiYRtuYllmY.Rp3lxBO35zqC4gQucD5p3TBLYQcq6VppsoKGFk0F5o3qpNrTIo_yFC A2kK0jUtvCEg5bxnbQKj8sIqByyWlkMcpFPA4cTxQkdv7GC7CZRjC40GI9e23j6SfehchE.Kxjan rnRd4Tg4X.A_5j09atellg9O0rtNWPFqt8Nb3joSguLiXmZbUioGx36qNXLoIzbd70cl6_tjMqA6 Mov9D9Ierjg1ospz8pzv_zb6Jsa5LLsjz5fSTNSLvQarIz70r0w7Yo4meuipuxws7hRW_N9Q7iZR gtq7pDHpu3TlZB7OqF0UZgDVkP58- Received: from sonic.gate.mail.ne1.yahoo.com by sonic308.consmr.mail.gq1.yahoo.com with HTTP; Wed, 7 Aug 2019 04:22:58 +0000 Received: by smtp414.mail.gq1.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID 824dab95f2bc27aef8828c865105acd8; Wed, 07 Aug 2019 04:22:53 +0000 (UTC) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Subject: Re: devel/llvm90 requires math/z3 first; building math/z3 requires a c++ toolchain be in place From: Mark Millard In-Reply-To: <602EEB6C-D0B0-4EFB-AB0E-BE98FF1C4D90@yahoo.com> Date: Tue, 6 Aug 2019 21:22:52 -0700 Cc: freebsd-toolchain@freebsd.org, freebsd-ports@freebsd.org, freebsd-ppc@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: <086C99B8-1289-4D81-AAF5-85FB0AE70B7C@yahoo.com> References: <8DB3EAA4-2B88-4180-8386-673524D27C64@yahoo.com> <20190806165525.GC94703@spindle.one-eyed-alien.net> <2A88AADC-8ED0-4FFD-85A8-34C0186D5D4F@yahoo.com> <20190807020826.GH94703@spindle.one-eyed-alien.net> <602EEB6C-D0B0-4EFB-AB0E-BE98FF1C4D90@yahoo.com> To: Brooks Davis X-Mailer: Apple Mail (2.3445.104.11) X-Rspamd-Queue-Id: 463JJh5f2nz4CKY X-Spamd-Bar: - X-Spamd-Result: default: False [-1.84 / 15.00]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ptr:yahoo.com]; FREEMAIL_FROM(0.00)[yahoo.com]; MV_CASE(0.50)[]; DKIM_TRACE(0.00)[yahoo.com:+]; DMARC_POLICY_ALLOW(-0.50)[yahoo.com,reject]; FROM_EQ_ENVFROM(0.00)[]; RCVD_TLS_LAST(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[yahoo.com]; ASN(0.00)[asn:36647, ipnet:98.137.64.0/21, country:US]; MID_RHS_MATCH_FROM(0.00)[]; DWL_DNSWL_NONE(0.00)[yahoo.com.dwl.dnswl.org : 127.0.5.0]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-0.78)[-0.777,0]; R_DKIM_ALLOW(-0.20)[yahoo.com:s=s2048]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; NEURAL_SPAM_SHORT(0.21)[0.211,0]; NEURAL_HAM_LONG(-0.77)[-0.771,0]; MIME_GOOD(-0.10)[text/plain]; IP_SCORE(0.00)[ip: (2.42), ipnet: 98.137.64.0/21(0.90), asn: 36647(0.72), country: US(-0.05)]; IP_SCORE_FREEMAIL(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[32.68.137.98.list.dnswl.org : 127.0.5.0]; RCVD_COUNT_TWO(0.00)[2] X-BeenThere: freebsd-toolchain@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Maintenance of FreeBSD's integrated toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Aug 2019 04:23:02 -0000 [I found something known to be missing in the in at least some versions of llvm/cmake/modules/CrossCompile.cmake that messes up the overall handling of LLVM_ENABLE_Z3_SOLVER .] On 2019-Aug-6, at 20:23, Mark Millard wrote: > On 2019-Aug-6, at 19:08, Brooks Davis wrote: >=20 >> On Tue, Aug 06, 2019 at 05:59:21PM -0700, Mark Millard wrote: >>>=20 >>>=20 >>> On 2019-Aug-6, at 09:55, Brooks Davis wrote: >>>=20 >>>> I'd prefer to disable this dependency. There's a knob that worked = in >>>> the 8.0 timeframe, but the lit build now autodetects z3 when it is >>>> present and I've failed to find a knob to disable it. For now, the = easy >>>> workaround is probably to disable options LIT. We could make that = the >>>> default on non-LLVM platforms is that makes sense. >>>>=20 >>>> -- Brooks >>>=20 >>> Okay. >>>=20 >>> poudriere-devel automatically built math/z3 because >>> I'd indicated to build devel/llvm90 . math/z3 was not >>> previously built: I've never had other use of it. So >>> my context was not one of an implicit autodetect. >>=20 >> The dependency is there because if z3 is installed then the package >> that is built depends on z3. Thus I had not choice but to add a z3 >> dependency until I find a way to turn it off. You can either help = find >> a way to disable z3 detection in the cmake infrastructure or turn off >> LIT. I don't have any use for reports on the effects of commenting = out >> the DEPENDS line. I know what that does. >=20 >=20 > I hope this helps. (I'm not a cmake expert.) >=20 > llvm-9.0.0rc1.src/lib/Support/Z3Solver.cpp does: >=20 > #if LLVM_WITH_Z3 >=20 > #include >=20 > namespace { > . . . > } // end anonymous namespace >=20 > #endif >=20 > llvm::SMTSolverRef llvm::CreateZ3Solver() { > #if LLVM_WITH_Z3 > return llvm::make_unique(); > #else > llvm::report_fatal_error("LLVM was not compiled with Z3 support, = rebuild " > "with -DLLVM_ENABLE_Z3_SOLVER=3DON", > false); > return nullptr; > #endif > } >=20 > (There are other places LLVM_WITH_Z3 is used but the > above is suggestive.) >=20 > Working backwards finds that: >=20 > /wrkdirs/usr/ports/devel/llvm90/work/llvm-9.0.0rc1.src/CMakeLists.txt >=20 > shows LLVM_WITH_Z3 being conditionally set to 1 via . . . >=20 > set(LLVM_Z3_INSTALL_DIR "" CACHE STRING "Install directory of the Z3 = solver.") >=20 > find_package(Z3 4.7.1) >=20 > if (LLVM_Z3_INSTALL_DIR) > if (NOT Z3_FOUND) > message(FATAL_ERROR "Z3 >=3D 4.7.1 has not been found in = LLVM_Z3_INSTALL_DIR: ${LLVM_Z3_INSTALL_DIR}.") > endif() > endif() >=20 > set(LLVM_ENABLE_Z3_SOLVER_DEFAULT "${Z3_FOUND}") >=20 > option(LLVM_ENABLE_Z3_SOLVER > "Enable Support for the Z3 constraint solver in LLVM." > ${LLVM_ENABLE_Z3_SOLVER_DEFAULT} > ) >=20 > if (LLVM_ENABLE_Z3_SOLVER) > if (NOT Z3_FOUND) > message(FATAL_ERROR "LLVM_ENABLE_Z3_SOLVER cannot be enabled when = Z3 is not available.") > endif() >=20 > set(LLVM_WITH_Z3 1) > endif() >=20 > if( LLVM_TARGETS_TO_BUILD STREQUAL "all" ) > set( LLVM_TARGETS_TO_BUILD ${LLVM_ALL_TARGETS} ) > endif() >=20 >=20 > If I read that correctly, LLVM_ENABLE_Z3_SOLVER set directly > appears to override the default (that tracks if z3 was found). I saw a reference to: diff --git a/llvm/cmake/modules/CrossCompile.cmake = b/llvm/cmake/modules/CrossCompile.cmake index bc3b210f018..0c30b88f80f 100644 --- a/llvm/cmake/modules/CrossCompile.cmake +++ b/llvm/cmake/modules/CrossCompile.cmake @@ -53,6 +53,7 @@ function(llvm_create_cross_target_internal target_name = toolchain buildtype) -DLLVM_DEFAULT_TARGET_TRIPLE=3D"${TARGET_TRIPLE}" -DLLVM_TARGET_ARCH=3D"${LLVM_TARGET_ARCH}" = -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=3D"${LLVM_TEMPORARILY_ALLOW_OLD_TOO= LCHAIN}" + -DLLVM_ENABLE_Z3_SOLVER=3D"${LLVM_ENABLE_Z3_SOLVER}" ${build_type_flags} ${linker_flag} ${external_clang_dir} WORKING_DIRECTORY ${LLVM_${target_name}_BUILD} DEPENDS CREATE_LLVM_${target_name} in https://reviews.llvm.org/D54978 on Feb 12 2019, 5:41 PM and it had the comment: QUOTE Independent of the rest of the discussion, this patch should be part of = the reland, to make sure that explicitly turning off Z3 works reliably. = Thanks for coming up with that, and thanks everyone for the good = discussion here :) END QUOTE This apparently fixes a sub-cmake not respecting the LLVM_ENABLE_Z3_SOLVER setting in the parent cmake. (The overall review earlier describes the sub-cmake not doing the right thing.) =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)