From patchwork Fri Jan 31 17:13:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aleksandar Rakic X-Patchwork-Id: 105745 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B21013858C66 for ; Fri, 31 Jan 2025 17:17:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B21013858C66 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=htecgroup.com header.i=@htecgroup.com header.a=rsa-sha256 header.s=selector1 header.b=FHYAB5zM X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170130004.outbound.protection.outlook.com [IPv6:2a01:111:f403:c200::4]) by sourceware.org (Postfix) with ESMTPS id 6CD673858C53 for ; Fri, 31 Jan 2025 17:13:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6CD673858C53 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=htecgroup.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=htecgroup.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6CD673858C53 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c200::4 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1738343599; cv=pass; b=WMYe/MPGF7ty7/6khOzhNLDeovSHraLnbrV7u0E2G6gbYrt6BPaAD0s6upLCCw22o4Gj5guaiDmSn9Ol/rOvt6UFM9GgV3Ukehkn3k7uvzJu82Ea/tP/wDLZ394xEhk9U52n1zfZ760A4D3kfu2dBwJ6l+IDJUVYuNPUcDgDUWo= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1738343599; c=relaxed/simple; bh=X+t/HFtC+vW6iOKAwTTZrX+ZqWQgCgYdB6pflP3b7fY=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=b7+J0+2jA6vy7VJzrR7h7umEJGvRt1xU78aD7HuIaJQsT5PKTq7D1grArEkEsyG2/dXGMxB6T59GoWuoDE4A5zqh9KrjI4OrqFkrALkLTPCGTW6gWfKByxS+HHbmMVUmbXTfHOYe4du8gYdZe4023AhqNWyjZqyLsD0hnKx13ms= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6CD673858C53 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=a2tQBxvZ2iC4L3blDpAwp7PQF4o26L+X2hHws17CWguQ7jGhKEGhjfw0NlJNHXHhsjzKkDFlEGEYt7VcX9ZBkq0qfMyL1rOlqOKoE51sl2twHDgN5pLVdGRQQZu3QsrSM/3fx+Sin3vCCBx3knKUsJqE0UK1RotGHceozIpnCJOO5FcaB+NtlwTOGh10aIV059I4hasM2KMo6sbABFJmV8XsqOsL+IJo8WO2KBa8IvloqA3Y0QAV47ygRKCFdlsYDZcthRKWPnkoVXXREfccQnUcprCUK3ZfHV0gBMam20dpR+TaXZiJkYU7i9Vd8TnElAk4Bmm/vuThDHyhTHqBIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6b6opBFqxU58Ajr+4q3uSSkc+VfUWTTEFq/qSrg2bs4=; b=mMDtp+U+n4tsn0MnAqKr1SxRB4V3jRdGpgkZnm4gfRaYW9mo4ch23IAHVTJL6WoUk5XRWOWYrU8Ng/NcxxPvf+Z76zsHsqu2X8DhZfxWxiOxAcuPHt3pCdH0bogIAhlQjq0fj3aBHg1F3MU2h7/j5NNlwoCg0r9twaP9GdzG+PuDVHCZP8r50sgcbDtfG327sIi5c4QC0tNoGFhs8+lbhqvyZDnFXLlNGdlq0S+kUQs+ODI68b1itROvFH1QvrCfH1hrRaWNgIYR3+lPeAhLtTUdyrALfHh5RnF2kP+QEqOTtWFCLyRPBXCrpB9p5gUHBBYu2tmGe0x2EBED8KRG4w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6b6opBFqxU58Ajr+4q3uSSkc+VfUWTTEFq/qSrg2bs4=; b=FHYAB5zMOIyr/OHnLvPXapjTUcNFd/sI5IrhYD5v6ktrU0oTN5B7DZL8LTnsIrBlASrNSDyEPL8VPzgeoare8HDeMorXZM8EAqYG+FmmYTqouuKMxQEwqo2t93JiEkp2kKdHYT4193vAa7ITlb7vgfGYUjaWtK7FsktDeQh/+4pMcPctXblcR/5wuoeFmme1r2nEM6elnhZ6yb+6EPZCdb3x5/AIGxjAX6FAmGMMb4y/CelmarkvY43urOR/PdGgN3WiIukYPeYkms8x+Ba1QALPjhaz56CUPAqANTVr4L3bVxeXVQQmO+ZLMc1GMCjZhanm6g4dHK9xZUUozkd1IQ== Received: from PA4PR09MB4864.eurprd09.prod.outlook.com (2603:10a6:102:ed::17) by PR3PR09MB5442.eurprd09.prod.outlook.com (2603:10a6:102:17d::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.22; Fri, 31 Jan 2025 17:13:02 +0000 Received: from PA4PR09MB4864.eurprd09.prod.outlook.com ([fe80::a02b:9d5c:eca5:e024]) by PA4PR09MB4864.eurprd09.prod.outlook.com ([fe80::a02b:9d5c:eca5:e024%6]) with mapi id 15.20.8398.020; Fri, 31 Jan 2025 17:13:01 +0000 From: Aleksandar Rakic To: "gcc-patches@gcc.gnu.org" CC: Djordje Todorovic , "cfu@mips.com" , Robert Suchanek , Matthew Fortune , Faraz Shahbazker , Aleksandar Rakic Subject: [PATCH 01/61] Multilib changes Thread-Topic: [PATCH 01/61] Multilib changes Thread-Index: AQHbdANilGK0ARPPVUifehTyLEnnBQ== Date: Fri, 31 Jan 2025 17:13:01 +0000 Message-ID: <20250131171232.1018281-3-aleksandar.rakic@htecgroup.com> References: <20250131171232.1018281-1-aleksandar.rakic@htecgroup.com> In-Reply-To: <20250131171232.1018281-1-aleksandar.rakic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR09MB4864:EE_|PR3PR09MB5442:EE_ x-ms-office365-filtering-correlation-id: 90f1b26e-fb6e-4ba5-a81a-08dd421a84af x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|1800799024|376014|38070700018|13003099007; x-microsoft-antispam-message-info: =?iso-8859-1?q?4Fz/E6SXvaR1irsFtAQll27FSM?= =?iso-8859-1?q?he+Uvk1Zyomp/+8xK4aISxa9Yp6C3eX0vYtPqE8Pq9C+7ZUUUUYngksagUwi?= =?iso-8859-1?q?UlWQZpW6clKZd8/TijcaDaxan4CDMPL3hE4jQ5lXZ3wYHrGiwNucCPm4P8DL?= =?iso-8859-1?q?ZB1ilK3+K5xcfIiINgMDuGaW1P//dQmE1XkhbsYSdJ7K50F/ypPj6Cm7V+AY?= =?iso-8859-1?q?gqkmWMYg0DBANWisOFWGe3XHzpPJD6QxpBdmHxglDIQO5yOkJd+TEvhYDyU8?= =?iso-8859-1?q?6X++6yh/g8R5HjwTGOOzTUa8DnkkSQajbQup0AWQEgz2BJbwsIHmSO3qoF5W?= =?iso-8859-1?q?sz2lLYntyyqTbqePvtuZkvk4HjbelfX11An7qbSZzBR+lP7o8VPC3UYAbmw3?= =?iso-8859-1?q?gce+zT4O8WUBKnIAH/bZhJ3DfCK9MPt/IfpneXz7eLjfzKKNzFT+uABxkx2p?= =?iso-8859-1?q?2mJST6yUxJsEDI9nle9WCazMIMzNqg29PpUz2XPXUT6XVJ/2gHF/yzo1vWv1?= =?iso-8859-1?q?QSzNsFrZ58vADszUNL4/nTFf/G5mdVLCNtxQB4jQEybxoy1gcSi+M66T+u8A?= =?iso-8859-1?q?358lauz6z3mPXcd2RDZASyie/jbb4diVTuHiIAb+mAOq6vYH3iCl7UHfFMOb?= =?iso-8859-1?q?l+nghmF6seRLkgXH7exycZcy1r7EeI8bpaPTFwYJkN1iezzhJgKzIZ4N4Ud0?= =?iso-8859-1?q?ewAooWgGx4osiaD9ic7bsB5WeY8Q/oI+bPIyJn5p2A6w9wI7P8YL8ux7+erX?= =?iso-8859-1?q?2BIXE/5sD/SpOH34w6VoH4vncAkfrj/p/MMfi+GnmzNo9FaF9EMnuTNDeZjE?= =?iso-8859-1?q?V4c30TkYiVrp99v5MIevLL9Mr4nsPtiIX1n1GchQy9EG2njnkCshSmkXG/dp?= =?iso-8859-1?q?yeYtuIAXeLlqIqD/ipMZA6+bLOzNRixdTSR8Sto+ogyKQstHMVSuUAXid5I6?= =?iso-8859-1?q?smVIJxpH6+2lPMFZlaHO4FFY6P2j7ys/nt8DG6vhu1koQRifw/YpGbWuImZ2?= =?iso-8859-1?q?9yMzxJv9V9KVV9aKrI0gHPl5P9zBuLEzjqScIUfTJym1z/FkUtxm560Ly02+?= =?iso-8859-1?q?gmLOAJbZ4VoK5UnNppetrnQyrILT+kuqYP9IZimtO+nXK8BJko0+w8nfZEl+?= =?iso-8859-1?q?U6Snj7CW2EPfnkkGQti3KyGutGPVkUm/9HdYPHZhgOgYA7gGcivVrPfswNFo?= =?iso-8859-1?q?nLU6XR4ja5lrNFSe4kR/3F5qxKPbSCgeB3OLbxyoW2DyN6Mikmtp2MB9babr?= =?iso-8859-1?q?jvRK3gP2Jczt3PihA02wIMaDX0+K+teh9QlYVYrXPf4StHrEp89BxUVQLCT3?= =?iso-8859-1?q?u14IBqWX1nPX8J936clez7/kuos/tpMReqmB7AcPVMZI9TXIbo5L2nezioYz?= =?iso-8859-1?q?iyQh1jgNX4dPt14REWch0VAnAtyvcx4vyh6CIfRXBMHNw19DLb8oWQCLzy3X?= =?iso-8859-1?q?IW?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA4PR09MB4864.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(38070700018)(13003099007); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?JiDNIa8owtXZX300bOhSPP9?= =?iso-8859-1?q?0F56rIAopwOUAmdSRdck07WBpDm3JpQeA0fX35NCjkmTJX+xNgRKdOilpYOi?= =?iso-8859-1?q?S690vUpYLAFE1dnvzzk/M8IpHAQXEMEb1lU784nDszZGL1Q2MZuQ0Zd1WdJM?= =?iso-8859-1?q?51TI01DUpW2oeMwmvi2Ql8uL5drMw4LeZ8sBCMe4bvGSmpvZl5G2W3XTSz+O?= =?iso-8859-1?q?Va7Jg/yzM7LXRVlGdYePZtqJDgitwoR/Iw4JQu/EPsamkUcx3BJVF10WdxLX?= =?iso-8859-1?q?o58kcKe6y9m1cwFNI9CjZE+vAat2fCnWjcc2+WzivKO3eL9866BMi8dZXDhJ?= =?iso-8859-1?q?k8DlkhEX8jmro3DYwoL6WaM9RFUulezYJcZUE+bw3zVjU6I10P473Xj5YyPu?= =?iso-8859-1?q?vJIKBOsCQLMLg1jKEbpnA3HE9Wl9LM/Xlg/0RlBLRiiV8RPtYII5NDgie828?= =?iso-8859-1?q?+P71dNwnIXty0Pf9byjgMWh8o88C7GxcBm7BnOSYQCPZbMcAA4rrsB9jJXyl?= =?iso-8859-1?q?L43N+Q8Vj6VAi8WdU4Oww3Z6oEUYKrQTCQdferEwsWaLVwK9iSsXfpT2dn0G?= =?iso-8859-1?q?Fp+P4IAYeJAsy8/FxBgy351PifqAMqcrHs2Vj+KI//BAgeOCMjoSg8Cy54NH?= =?iso-8859-1?q?mYUQGZ+b2VsjbafCLm9u3p9fVir+Tud5Pa1N5Ss/WYHl8sYpT2lfe+V4R/A6?= =?iso-8859-1?q?oyJ1hxq0PdaBi3DSkiIIvaimmO1WhQzOFBNqEbKh+dGxTVQpoTiUK3kyIV+y?= =?iso-8859-1?q?FUaMaSkJvydZcqAHPAPT4NjxdaU6sE5B1G9UhfYRYlgT55E2aCvwinHCezu2?= =?iso-8859-1?q?5Z4y7YQqZcYXeKYx8A740SJc8tT8Ga4CxZwtCcbAOThi7ZVfvoLWsCjedLqQ?= =?iso-8859-1?q?JHciQygZzYnKeU72gHSAlEsawmOL19fdi3O0QaFGe2IwkVRkJV78qZ1HUMQO?= =?iso-8859-1?q?vNSqVXkONWRtE7zmTpFcB//RRb0cZpFzBlS9gwmJJ1DpXxcWcGCRsy2rrQ98?= =?iso-8859-1?q?ozFXo2+s0JUQ0IFBPcCpGEJyDL1OwsVKdjHf9mKh32SS2O3RRnYFIHmxbJ7x?= =?iso-8859-1?q?LS9DFgk7f+IyjMcDpKN965HSAqNk1OT34hKGLjoOkjXtPZOx/ze08PZewxpZ?= =?iso-8859-1?q?ZZuR8iuwhlciBZO25HLEQJAxkV/kNqv+B27w87p3kuc0gkm5k+lQzb/o2UJE?= =?iso-8859-1?q?4HJ8STd0dcOXY7mDIOZGMB0ab/ozwoNj7PN8Yh6cD3wA80tsRf3SvtK1SybA?= =?iso-8859-1?q?glNc6MZKv5DLbdaiRcbJpFjUVrMIX6Rrh8w9K3tiefaXGRfV+CgFhhPWo+Kz?= =?iso-8859-1?q?5+RMvZrGCPF0f6BvNtO7Y13vLm5e/UgVORfhozoskSBLPdXf4eP8fjeTo/M8?= =?iso-8859-1?q?VAISZ0/T8wksM0VJID/aMRizLhIGzitL6eoD0znVoQwvJn24NSa0JZzy9Jxy?= =?iso-8859-1?q?UEl4VRILeIS/2AZa4ABsQsTzo7aESnapKclJ9lWsgWVf+9T77TfyPY2xmurI?= =?iso-8859-1?q?Dim2EtrIGWaHVYLi3+Drgz/DhLTCR+rdLvz4miOQPFxhzev8lRpTjU2c174B?= =?iso-8859-1?q?FaDlHqiMaXOpFkgf4QcGTc//fd0o1fB+JT7zUZ72dTZwGxVOtddqJ3sSYBZ0?= =?iso-8859-1?q?1my5hJ02r9rAi6IuZ1fB1zrQjSylnFfodn9Xhwlo8r8tEgdaUQzyvGMi2h3U?= =?iso-8859-1?q?=3D?= MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR09MB4864.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90f1b26e-fb6e-4ba5-a81a-08dd421a84af X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Jan 2025 17:13:01.8917 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: BRgFHU2ysDJLw0bhoB+/aJQ38+AVZ3/NrqBryOeueMYhQHrSZCMa6Sh1JkNtzVkOvCub2smnNTujF9w3AWNDYX3uI4J1SyZEG+L1qeRGRpc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR09MB5442 X-Spam-Status: No, score=-10.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_LOTSOFHASH, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org From: Robert Suchanek Remove single-float and short-double axes from multilib spec. The single-float/short-double combination is not immediately supportable from GCC 6 as the -fshort-double option has been removed and we do not have backend logic to implement a direct replacement. If/when we do this then it needs appropriate ABI markers to describe the additional variant. Remove final remnant of single/short config. Add the mips32r2 mips16 little endian soft-float multilib. Add big-endian, MIPS64R6, soft-float, N32/N64 Linux libs. Add MIPS32R1 HF LE Linux libraries. Add big endian microMIPSr2 hard/soft float support. Disable microMIPSr6 multilib configs. Cherry-picked 2b2481cc71284ad9db3dff60bd6cab2be678e87e, 0e3416279af1417b85d1a09b1e74327c31899a5d, e50ab07265fd8188bd4275c14b744ed2dc39116d, 32f7098d7d5bee9754c7728639a0e1cdb24d63f7, 24e261b2c9a9bea1c205cfab761c218ad50f938e, and 796ddebed418e953ba7cd5de1da42311fb1fe096 from https://github.com/MIPS/gcc Signed-off-by: Robert Suchanek Signed-off-by: Matthew Fortune Signed-off-by: Chao-ying Fu Signed-off-by: Faraz Shahbazker Signed-off-by: Aleksandar Rakic --- config-ml.in | 25 ++- configure | 25 +++ configure.ac | 25 +++ gcc/Makefile.in | 20 ++ gcc/config.gcc | 12 +- gcc/config/mips/ml-img-elf | 12 + gcc/config/mips/ml-img-linux | 10 + gcc/config/mips/ml-mti-elf | 31 +++ gcc/config/mips/ml-mti-linux | 27 +++ gcc/config/mips/mti-elf.h | 2 + gcc/config/mips/mti-linux.h | 2 + gcc/config/mips/t-img-elf | 33 --- gcc/config/mips/t-img-linux | 38 ---- gcc/config/mips/t-mips-multi | 409 +++++++++++++++++++++++++++++++++++ gcc/config/mips/t-mti-elf | 48 ---- gcc/config/mips/t-mti-linux | 158 -------------- gcc/configure | 8 +- gcc/configure.ac | 3 + gcc/genmultilib | 3 - 19 files changed, 604 insertions(+), 287 deletions(-) create mode 100644 gcc/config/mips/ml-img-elf create mode 100644 gcc/config/mips/ml-img-linux create mode 100644 gcc/config/mips/ml-mti-elf create mode 100644 gcc/config/mips/ml-mti-linux delete mode 100644 gcc/config/mips/t-img-elf delete mode 100644 gcc/config/mips/t-img-linux create mode 100644 gcc/config/mips/t-mips-multi delete mode 100644 gcc/config/mips/t-mti-elf delete mode 100644 gcc/config/mips/t-mti-linux diff --git a/config-ml.in b/config-ml.in index 645cac822fd..44bfd616f62 100644 --- a/config-ml.in +++ b/config-ml.in @@ -382,6 +382,23 @@ mips*-*-*) esac done fi + if [ x$with_multi_buildlist != x ] + then + old_multidirs="${multidirs}" + if [ ! -f $with_multi_buildlist ] + then + echo "config-ml.in: Failed to find $with_multi_buildlist" + exit 1 + fi + multidirs="" + for x in ${old_multidirs}; do + found=`grep "^${x}$" $with_multi_buildlist` + if [ -n "$found" ] + then + multidirs="${multidirs} ${x}" + fi + done + fi ;; msp430-*-*) if [ x$enable_no_exceptions = xno ] @@ -597,7 +614,8 @@ else fi if [ -z "${with_multisubdir}" ]; then - ml_subdir= + ml_top_subdir=`${CC-gcc} --print-multi-directory 2>/dev/null` + ml_subdir=/$ml_top_subdir ml_builddotdot= : # ml_srcdotdot= # already set else @@ -676,6 +694,11 @@ if [ -n "${multidirs}" ] && [ -z "${ml_norecursion}" ]; then for ml_dir in ${multidirs}; do + if [ "${ml_dir}" == "${ml_top_subdir}" ]; then + echo "Skipping configure in multilib subdir ${ml_dir}" + continue + fi + if [ "${ml_verbose}" = --verbose ]; then echo "Running configure in multilib subdir ${ml_dir}" echo "pwd: `${PWDCMD-pwd}`" diff --git a/configure b/configure index a2e86731b08..c84ce115bea 100755 --- a/configure +++ b/configure @@ -11338,6 +11338,31 @@ if test x${enable_multilib} = x ; then target_configargs="--enable-multilib ${target_configargs}" fi +# Select default multilib build variants +if test x${with_multi_buildlist} = x ; then + case "$target" in + mips*-img-linux*) multi_buildlist=${srcdir}/gcc/config/mips/ml-img-linux ;; + mips*-mti-linux*) multi_buildlist=${srcdir}/gcc/config/mips/ml-mti-linux ;; + mips*-img-elf*) multi_buildlist=${srcdir}/gcc/config/mips/ml-img-elf ;; + mips*-mti-elf*) multi_buildlist=${srcdir}/gcc/config/mips/ml-mti-elf ;; + esac + # Verify the file exists before using it in case the gcc component is not + # present in the tree. + if test -f "${multi_buildlist}" ; then + with_multi_buildlist=$multi_buildlist + fi +fi + +# Pass through with_multi_buildlist to host and target. 'gcc' needs it for the +# fixed includes which are multilib'd and target libraries need it as they use +# config-ml.in. +if test x${with_multi_buildlist} != x ; then + target_configargs="--with-multi-buildlist=${with_multi_buildlist} \ + ${target_configargs}" + host_configargs="--with-multi-buildlist=${with_multi_buildlist} \ + ${host_configargs}" +fi + # Pass --with-newlib if appropriate. Note that target_configdirs has # changed from the earlier setting of with_newlib. if test x${with_newlib} != xno && echo " ${target_configdirs} " | grep " newlib " > /dev/null 2>&1 && test -d ${srcdir}/newlib ; then diff --git a/configure.ac b/configure.ac index 25419a1d2ab..091707ab6bf 100644 --- a/configure.ac +++ b/configure.ac @@ -3577,6 +3577,31 @@ if test x${enable_multilib} = x ; then target_configargs="--enable-multilib ${target_configargs}" fi +# Select default multilib build variants +if test x${with_multi_buildlist} = x ; then + case "$target" in + mips*-img-linux*) multi_buildlist=${srcdir}/gcc/config/mips/ml-img-linux ;; + mips*-mti-linux*) multi_buildlist=${srcdir}/gcc/config/mips/ml-mti-linux ;; + mips*-img-elf*) multi_buildlist=${srcdir}/gcc/config/mips/ml-img-elf ;; + mips*-mti-elf*) multi_buildlist=${srcdir}/gcc/config/mips/ml-mti-elf ;; + esac + # Verify the file exists before using it in case the gcc component is not + # present in the tree. + if test -f "${multi_buildlist}" ; then + with_multi_buildlist=$multi_buildlist + fi +fi + +# Pass through with_multi_buildlist to host and target. 'gcc' needs it for the +# fixed includes which are multilib'd and target libraries need it as they use +# config-ml.in. +if test x${with_multi_buildlist} != x ; then + target_configargs="--with-multi-buildlist=${with_multi_buildlist} \ + ${target_configargs}" + host_configargs="--with-multi-buildlist=${with_multi_buildlist} \ + ${host_configargs}" +fi + # Pass --with-newlib if appropriate. Note that target_configdirs has # changed from the earlier setting of with_newlib. if test x${with_newlib} != xno && echo " ${target_configdirs} " | grep " newlib " > /dev/null 2>&1 && test -d ${srcdir}/newlib ; then diff --git a/gcc/Makefile.in b/gcc/Makefile.in index e8b2a38c8b3..e1a515504ab 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -642,6 +642,9 @@ else endif endif +# Multilib control +with_multi_buildlist = @with_multi_buildlist@ + # ------------------------ # Installation directories # ------------------------ @@ -3383,10 +3386,27 @@ fixinc_list: s-fixinc_list; @true s-fixinc_list : $(GCC_PASSES) # Build up a list of multilib directories and corresponding sysroot # suffixes, in form sysroot;multilib. +# Use a filtered multilib list if requested. if $(GCC_FOR_TARGET) -print-sysroot-headers-suffix > /dev/null 2>&1; then \ set -e; for ml in `$(GCC_FOR_TARGET) -print-multi-lib`; do \ multi_dir=`echo $${ml} | sed -e 's/;.*$$//'`; \ flags=`echo $${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \ + case "$(target)" in \ + mips*-*-*) \ + if [ x$(with_multi_buildlist) != x ]; then \ + if [ ! -f $(with_multi_buildlist) ]; then \ + echo "fixinc_list: Failed to find $(with_multi_buildlist)"; \ + exit 1; \ + fi; \ + set +e; \ + found=`grep "^$${multi_dir}$$" $(with_multi_buildlist)`; \ + set -e; \ + if [ -z "$$found" ]; then \ + continue; \ + fi; \ + fi; \ + ;; \ + esac; \ sfx=`$(GCC_FOR_TARGET) $${flags} -print-sysroot-headers-suffix`; \ if [ "$${multi_dir}" = "." ]; \ then multi_dir=""; \ diff --git a/gcc/config.gcc b/gcc/config.gcc index 9b616bd6e1f..9ec3001527a 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -2625,22 +2625,24 @@ mips*-*-netbsd*) # NetBSD/mips, either endian. mips*-img-linux*) tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h mips/mti-linux.h" extra_options="${extra_options} linux-android.opt" - tmake_file="${tmake_file} mips/t-img-linux" + tmake_file="${tmake_file} mips/t-mips-multi" tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32" with_arch_32="mips32r6" with_arch_64="mips64r6" gnu_ld=yes gas=yes + TM_MULTILIB_EXCEPTIONS_CONFIG="*mclib=*" ;; mips*-mti-linux*) tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h mips/mti-linux.h" extra_options="${extra_options} linux-android.opt" - tmake_file="${tmake_file} mips/t-mti-linux" + tmake_file="${tmake_file} mips/t-mips-multi" tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32" with_arch_32="mips32r2" with_arch_64="mips64r2" gnu_ld=yes gas=yes + TM_MULTILIB_EXCEPTIONS_CONFIG="*mclib=*" ;; mips*-*-linux*) # Linux MIPS, either endian. tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h" @@ -2705,17 +2707,19 @@ mips*-*-linux*) # Linux MIPS, either endian. ;; mips*-mti-elf*) tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h" - tmake_file="mips/t-mti-elf" + tmake_file="mips/t-mips-multi" tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32" with_arch_32="mips32r2" with_arch_64="mips64r2" + TM_MULTILIB_EXCEPTIONS_CONFIG="*mglibc* *muclibc*" ;; mips*-img-elf*) tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h" - tmake_file="mips/t-img-elf" + tmake_file="mips/t-mips-multi" tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32" with_arch_32="mips32r6" with_arch_64="mips64r6" + TM_MULTILIB_EXCEPTIONS_CONFIG="*mglibc* *muclibc* *mandroid*" ;; mips*-sde-elf*) tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h" diff --git a/gcc/config/mips/ml-img-elf b/gcc/config/mips/ml-img-elf new file mode 100644 index 00000000000..91204f825ed --- /dev/null +++ b/gcc/config/mips/ml-img-elf @@ -0,0 +1,12 @@ +mips-r6-hard-newlib/lib +mips-r6-hard-newlib/lib32 +mips-r6-hard-newlib/lib64 +mips-r6-soft-newlib/lib +mips-r6-soft-newlib/lib32 +mips-r6-soft-newlib/lib64 +mipsel-r6-hard-newlib/lib +mipsel-r6-hard-newlib/lib32 +mipsel-r6-hard-newlib/lib64 +mipsel-r6-soft-newlib/lib +mipsel-r6-soft-newlib/lib32 +mipsel-r6-soft-newlib/lib64 diff --git a/gcc/config/mips/ml-img-linux b/gcc/config/mips/ml-img-linux new file mode 100644 index 00000000000..c9a58272f55 --- /dev/null +++ b/gcc/config/mips/ml-img-linux @@ -0,0 +1,10 @@ +mips-r6-hard/lib +mips-r6-soft/lib +mips-r6-hard/lib32 +mips-r6-soft/lib32 +mips-r6-hard/lib64 +mips-r6-soft/lib64 +mipsel-r6-hard/lib +mipsel-r6-soft/lib +mipsel-r6-hard/lib32 +mipsel-r6-hard/lib64 diff --git a/gcc/config/mips/ml-mti-elf b/gcc/config/mips/ml-mti-elf new file mode 100644 index 00000000000..ba61eb3efa6 --- /dev/null +++ b/gcc/config/mips/ml-mti-elf @@ -0,0 +1,31 @@ +mips-r2-hard-newlib/lib +mips-r2-hard-newlib/lib32 +mips-r2-hard-newlib/lib64 +mips-r2-hard-nan2008-newlib/lib +mips-r2-soft-newlib/lib +mips-r2-soft-newlib/lib32 +mips-r2-soft-newlib/lib64 +mipsel-r2-hard-newlib/lib +mipsel-r2-hard-newlib/lib32 +mipsel-r2-hard-newlib/lib64 +mipsel-r2-soft-newlib/lib +mipsel-r2-soft-newlib/lib32 +mipsel-r2-soft-newlib/lib64 +mipsel-r2-mips16-soft-newlib/lib +mipsel-r2-hard-nan2008-newlib/lib +micromips-r2-hard-nan2008-newlib/lib +micromips-r2-soft-newlib/lib +micromipsel-r2-hard-nan2008-newlib/lib +micromipsel-r2-soft-newlib/lib +mips-r6-hard-newlib/lib +mips-r6-hard-newlib/lib32 +mips-r6-hard-newlib/lib64 +mips-r6-soft-newlib/lib +mips-r6-soft-newlib/lib32 +mips-r6-soft-newlib/lib64 +mipsel-r6-hard-newlib/lib +mipsel-r6-hard-newlib/lib32 +mipsel-r6-hard-newlib/lib64 +mipsel-r6-soft-newlib/lib +mipsel-r6-soft-newlib/lib32 +mipsel-r6-soft-newlib/lib64 diff --git a/gcc/config/mips/ml-mti-linux b/gcc/config/mips/ml-mti-linux new file mode 100644 index 00000000000..aabd81bceb9 --- /dev/null +++ b/gcc/config/mips/ml-mti-linux @@ -0,0 +1,27 @@ +mips-r2-hard/lib +mips-r2-soft/lib +mips-r2-hard/lib32 +mips-r2-hard/lib64 +mips-r2-hard-nan2008/lib +mipsel-r1-hard/lib +mipsel-r2-hard/lib +mipsel-r2-soft/lib +mipsel-r2-hard/lib32 +mipsel-r2-hard/lib64 +mipsel-r2-hard-nan2008/lib +micromipsel-r2-hard-nan2008/lib +micromipsel-r2-soft/lib +mips-r2-hard-uclibc/lib +mips-r2-hard-nan2008-uclibc/lib +mipsel-r2-hard-uclibc/lib +mipsel-r2-hard-nan2008-uclibc/lib +mips-r6-hard/lib +mips-r6-soft/lib +mips-r6-hard/lib32 +mips-r6-soft/lib32 +mips-r6-hard/lib64 +mips-r6-soft/lib64 +mipsel-r6-hard/lib +mipsel-r6-soft/lib +mipsel-r6-hard/lib32 +mipsel-r6-hard/lib64 diff --git a/gcc/config/mips/mti-elf.h b/gcc/config/mips/mti-elf.h index 5dd7e2f4f5a..5cd1d30f245 100644 --- a/gcc/config/mips/mti-elf.h +++ b/gcc/config/mips/mti-elf.h @@ -17,6 +17,8 @@ You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see . */ +#undef MULTILIB_DEFAULTS + #undef DRIVER_SELF_SPECS #define DRIVER_SELF_SPECS \ /* Set the ISA for the default multilib. */ \ diff --git a/gcc/config/mips/mti-linux.h b/gcc/config/mips/mti-linux.h index a6698d3ad97..eac4228b1c0 100644 --- a/gcc/config/mips/mti-linux.h +++ b/gcc/config/mips/mti-linux.h @@ -23,6 +23,8 @@ along with GCC; see the file COPYING3. If not see mips64r3, and mips64r5 will all default to 'r2'. See MULTILIB_MATCHES definition in t-mti-linux. */ +#undef MULTILIB_DEFAULTS + #define MIPS_SYSVERSION_SPEC \ "%{mips32|mips64:r1;mips32r6|mips64r6:r6;:r2}%{mips16:-mips16}" diff --git a/gcc/config/mips/t-img-elf b/gcc/config/mips/t-img-elf deleted file mode 100644 index 25d33eda9fb..00000000000 --- a/gcc/config/mips/t-img-elf +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (C) 2014-2024 Free Software Foundation, Inc. -# -# This file is part of GCC. -# -# GCC 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 3, or (at your option) -# any later version. -# -# GCC 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 GCC; see the file COPYING3. If not see -# . - -# The default build is mips32r6, hard-float big-endian. -# A multilib for mips32r6+LE -# A multilib for mips64r6 -# A multilib for mips64r6+LE - -MULTILIB_OPTIONS = mips64r6 mabi=64 EL msoft-float/msingle-float -MULTILIB_DIRNAMES = mips64r6 64 el sof sgl -MULTILIB_MATCHES = EL=mel EB=meb - -# Don't build 64r6 with single-float -MULTILIB_EXCEPTIONS += mips64r6/*msingle-float* - -MULTILIB_EXCEPTIONS += mabi=64* -MULTILIB_EXCEPTIONS += msingle-float* -MULTILIB_EXCEPTIONS += *msingle-float diff --git a/gcc/config/mips/t-img-linux b/gcc/config/mips/t-img-linux deleted file mode 100644 index b899080cd37..00000000000 --- a/gcc/config/mips/t-img-linux +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (C) 2014-2024 Free Software Foundation, Inc. -# -# This file is part of GCC. -# -# GCC 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 3, or (at your option) -# any later version. -# -# GCC 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 GCC; see the file COPYING3. If not see -# . - -# The default build is mips32r6, hard-float big-endian. Add mips64r6, -# 64-bit ABI and little-endian variations. - -MULTILIB_OPTIONS = mips64r6 mabi=64 EL -MULTILIB_DIRNAMES = mips64r6 64 el -MULTILIB_MATCHES = EL=mel EB=meb - -MULTILIB_REQUIRED = -MULTILIB_OSDIRNAMES = .=mips-r6-hard/lib -MULTILIB_REQUIRED += mips64r6 -MULTILIB_OSDIRNAMES += mips64r6=!mips-r6-hard/lib32 -MULTILIB_REQUIRED += mips64r6/mabi=64 -MULTILIB_OSDIRNAMES += mips64r6/mabi.64=!mips-r6-hard/lib64 - -MULTILIB_REQUIRED += EL -MULTILIB_OSDIRNAMES += EL=!mipsel-r6-hard/lib -MULTILIB_REQUIRED += mips64r6/EL -MULTILIB_OSDIRNAMES += mips64r6/EL=!mipsel-r6-hard/lib32 -MULTILIB_REQUIRED += mips64r6/mabi=64/EL -MULTILIB_OSDIRNAMES += mips64r6/mabi.64/EL=!mipsel-r6-hard/lib64 diff --git a/gcc/config/mips/t-mips-multi b/gcc/config/mips/t-mips-multi new file mode 100644 index 00000000000..b6797a98811 --- /dev/null +++ b/gcc/config/mips/t-mips-multi @@ -0,0 +1,409 @@ +# Copyright (C) 2024 Free Software Foundation, Inc. +# +# This file is part of GCC. +# +# GCC 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 3, or (at your option) +# any later version. +# +# GCC 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 GCC; see the file COPYING3. If not see +# . + +# There is no default build in this multilib setup. This +# unfortunately does not prevent config-ml.in from building a default +# but this can be removed via post install scripts. +# +# All possible MIPS multilibs are shown in this file. They are +# limited via a file that lists required multilibs for each vendor/OS +# combination which can be overridden at build time as well. +# +# The benefit to describing all multilibs is that the compiler driver +# can use any multilib if it is present and therefore additional +# library variants can be added to an installation after initial +# build. This could be achieved by building all libraries and +# removing the ones we don't want to ship but this would massively +# increase build times in situations where only a few are required +# immediately. + +MULTILIB_OPTIONS = mclib=small/mclib=tiny/muclibc \ + mips32/mips32r2/mips32r6/mips64/mips64r2/mips64r6 \ + mips16/mmicromips \ + mabi=32/mabi=n32/mabi=64 \ + EB/EL \ + msoft-float \ + mnan=2008 +MULTILIB_DIRNAMES = small tiny uclibc mips32 mips32r2 mips32r6 mips64 \ + mips64r2 mips64r6 mips16 micromips 32 n32 64 \ + eb el sof nan2008 +MULTILIB_MATCHES = EL=mel EB=meb \ + mips32r2=mips32r3 mips32r2=mips32r5 \ + mips64r2=mips64r3 mips64r2=mips64r5 + +# Allow the exceptions list to be controlled by configure time options +MULTILIB_EXCEPTIONS = $(TM_MULTILIB_EXCEPTIONS_CONFIG) + +# Determine if this is a bare metal target with a newlib default library +is_newlib = $(if $(filter elf, $(lastword $(subst -, ,$(target)))),-newlib) + +MULTILIB_EXCLUSIONS := !mclib=small/!mclib=tiny/!muclibc/!mips32/!mips32r2 +MULTILIB_EXCLUSIONS := $(MULTILIB_EXCLUSIONS)/!mips32r6/!mips64/!mips64r2 +MULTILIB_EXCLUSIONS := $(MULTILIB_EXCLUSIONS)/!mips64r6/!mips16/!mmicromips +MULTILIB_EXCLUSIONS := $(MULTILIB_EXCLUSIONS)/!mabi=32/!mabi=n32/!mabi=64/!EB +MULTILIB_EXCLUSIONS := $(MULTILIB_EXCLUSIONS)/!EL/!msoft-float/!mnan=2008 + +# MIPS32R6/MIPS64R6 +MULTILIB_REQUIRED = mips32r6/mabi=32/EB/mnan=2008 +MULTILIB_OSDIRNAMES = mips32r6/mabi.32/EB/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-hard$(is_newlib)/lib +MULTILIB_REUSE = mips32r6/mabi.32/EB/mnan.2008= +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r6/mabi.32/EB/mnan.2008 +MULTILIB_REQUIRED += mips64r6/mabi=n32/EB/mnan=2008 +MULTILIB_OSDIRNAMES += mips64r6/mabi.n32/EB/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-hard$(is_newlib)/lib32 +MULTILIB_REQUIRED += mips64r6/mabi=64/EB/mnan=2008 +MULTILIB_OSDIRNAMES += mips64r6/mabi.64/EB/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-hard$(is_newlib)/lib64 + +MULTILIB_REQUIRED += mips32r6/mabi=32/EB/msoft-float/mnan=2008 +MULTILIB_OSDIRNAMES += mips32r6/mabi.32/EB/msoft-float/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-soft$(is_newlib)/lib +MULTILIB_REUSE += mips32r6/mabi.32/EB/msoft-float/mnan.2008=mips64r6 +MULTILIB_REUSE := $(MULTILIB_REUSE)/mabi.32/EB/msoft-float/mnan.2008 +MULTILIB_REQUIRED += mips64r6/mabi=n32/EB/msoft-float/mnan=2008 +MULTILIB_OSDIRNAMES += mips64r6/mabi.n32/EB/msoft-float/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-soft$(is_newlib)/lib32 +MULTILIB_REQUIRED += mips64r6/mabi=64/EB/msoft-float/mnan=2008 +MULTILIB_OSDIRNAMES += mips64r6/mabi.64/EB/msoft-float/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-soft$(is_newlib)/lib64 + +MULTILIB_REQUIRED += mips32r6/mabi=32/EL/mnan=2008 +MULTILIB_OSDIRNAMES += mips32r6/mabi.32/EL/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-hard$(is_newlib)/lib +MULTILIB_REUSE += mips32r6/mabi.32/EL/mnan.2008= +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r6/mabi.32/EL/mnan.2008 +MULTILIB_REQUIRED += mips64r6/mabi=n32/EL/mnan=2008 +MULTILIB_OSDIRNAMES += mips64r6/mabi.n32/EL/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-hard$(is_newlib)/lib32 +MULTILIB_REQUIRED += mips64r6/mabi=64/EL/mnan=2008 +MULTILIB_OSDIRNAMES += mips64r6/mabi.64/EL/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-hard$(is_newlib)/lib64 + +MULTILIB_REQUIRED += mips32r6/mabi=32/EL/msoft-float/mnan=2008 +MULTILIB_OSDIRNAMES += mips32r6/mabi.32/EL/msoft-float/mnan.2008= +MULTILIB_OSDIRNAMES :=$(MULTILIB_OSDIRNAMES)!mipsel-r6-soft$(is_newlib)/lib +MULTILIB_REUSE += mips32r6/mabi.32/EL/msoft-float/mnan.2008=mips64r6 +MULTILIB_REUSE := $(MULTILIB_REUSE)/mabi.32/EL/msoft-float/mnan.2008 +MULTILIB_REQUIRED += mips64r6/mabi=n32/EL/msoft-float/mnan=2008 +MULTILIB_OSDIRNAMES += mips64r6/mabi.n32/EL/msoft-float/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-soft$(is_newlib)/lib32 +MULTILIB_REQUIRED += mips64r6/mabi=64/EL/msoft-float/mnan=2008 +MULTILIB_OSDIRNAMES += mips64r6/mabi.64/EL/msoft-float/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-soft$(is_newlib)/lib64 + +# MIPS32R2/MIPS64R2 +MULTILIB_REQUIRED += mips32r2/mabi=32/EB +MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EB=!mips-r2-hard$(is_newlib)/lib +MULTILIB_REUSE += mips32r2/mabi.32/EB=mips64r2/mabi.32/EB +MULTILIB_REQUIRED += mips64r2/mabi=n32/EB +MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EB=!mips-r2-hard$(is_newlib)/lib32 +MULTILIB_REQUIRED += mips64r2/mabi=64/EB +MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EB=!mips-r2-hard$(is_newlib)/lib64 + +MULTILIB_REQUIRED += mips32r2/mabi=32/EB/mnan=2008 +MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EB/mnan.2008=!mips-r2-hard-nan2008 +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib +MULTILIB_REUSE += mips32r2/mabi.32/EB/mnan.2008= +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EB/mnan.2008 +MULTILIB_REQUIRED += mips64r2/mabi=n32/EB/mnan=2008 +MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EB/mnan.2008=!mips-r2-hard-nan2008 +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib32 +MULTILIB_REQUIRED += mips64r2/mabi=64/EB/mnan=2008 +MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EB/mnan.2008=!mips-r2-hard-nan2008 +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib64 + +MULTILIB_REQUIRED += mips32r2/mabi=32/EB/msoft-float +MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EB/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-soft$(is_newlib)/lib +MULTILIB_REUSE += mips32r2/mabi.32/EB/msoft-float= +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EB/msoft-float +MULTILIB_REQUIRED += mips64r2/mabi=n32/EB/msoft-float +MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EB/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-soft$(is_newlib)/lib32 +MULTILIB_REQUIRED += mips64r2/mabi=64/EB/msoft-float +MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EB/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-soft$(is_newlib)/lib64 + +MULTILIB_REQUIRED += mips32r2/mabi=32/EL +MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EL=!mipsel-r2-hard$(is_newlib)/lib +MULTILIB_REUSE += mips32r2/mabi.32/EL=mips64r2/mabi.32/EL +MULTILIB_REQUIRED += mips64r2/mabi=n32/EL +MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EL=!mipsel-r2-hard$(is_newlib)/lib32 +MULTILIB_REQUIRED += mips64r2/mabi=64/EL +MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL=!mipsel-r2-hard$(is_newlib)/lib64 + +MULTILIB_REQUIRED += mips32r2/mabi=32/EL/mnan=2008 +MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EL/mnan.2008=!mipsel-r2-hard-nan2008 +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib +MULTILIB_REUSE += mips32r2/mabi.32/EL/mnan.2008= +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EL/mnan.2008 +MULTILIB_REQUIRED += mips64r2/mabi=n32/EL/mnan=2008 +MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EL/mnan.2008=!mipsel-r2-hard-nan2008 +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib32 +MULTILIB_REQUIRED += mips64r2/mabi=64/EL/mnan=2008 +MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL/mnan.2008=!mipsel-r2-hard-nan2008 +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib64 + +MULTILIB_REQUIRED += mips32r2/mabi=32/EL/msoft-float +MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EL/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-soft$(is_newlib)/lib +MULTILIB_REUSE += mips32r2/mabi.32/EL/msoft-float= +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EL/msoft-float +MULTILIB_REQUIRED += mips64r2/mabi=n32/EL/msoft-float +MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EL/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-soft$(is_newlib)/lib32 +MULTILIB_REQUIRED += mips64r2/mabi=64/EL/msoft-float +MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-soft$(is_newlib)/lib64 + +# MIPS16 - We will not include any 64 bit mips16 combinations. +MULTILIB_REQUIRED += mips32r2/mips16/mabi=32/EB +MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EB=!mips-r2-mips16-hard +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib +MULTILIB_REQUIRED += mips32r2/mips16/mabi=32/EB/mnan=2008 +MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EB/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-mips16-hard-nan2008 +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib +MULTILIB_REQUIRED += mips32r2/mips16/mabi=32/EB/msoft-float +MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EB/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-mips16-soft +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib + +MULTILIB_REQUIRED += mips32r2/mips16/mabi=32/EL +MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EL= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-mips16-hard +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib +MULTILIB_REQUIRED += mips32r2/mips16/mabi=32/EL/mnan=2008 +MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EL/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-mips16-hard-nan2008 +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib +MULTILIB_REQUIRED += mips32r2/mips16/mabi=32/EL/msoft-float +MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EL/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-mips16-soft +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib + +# microMIPS32R3 - We will not include any 64 bit microMIPS combinations +MULTILIB_REQUIRED += mips32r2/mmicromips/mabi=32/EB/mnan=2008 +MULTILIB_OSDIRNAMES += mips32r2/mmicromips/mabi.32/EB/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-hard-nan2008 +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib +MULTILIB_REQUIRED += mips32r2/mmicromips/mabi=32/EB/msoft-float +MULTILIB_OSDIRNAMES += mips32r2/mmicromips/mabi.32/EB/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-soft$(is_newlib)/lib + +MULTILIB_REQUIRED += mips32r2/mmicromips/mabi=32/EL/mnan=2008 +MULTILIB_OSDIRNAMES += mips32r2/mmicromips/mabi.32/EL/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-hard-nan2008 +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib +MULTILIB_REQUIRED += mips32r2/mmicromips/mabi=32/EL/msoft-float +MULTILIB_OSDIRNAMES += mips32r2/mmicromips/mabi.32/EL/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-soft +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib + +# Version 1 multilibs + +MULTILIB_REQUIRED += mips32/mabi=32/EB +MULTILIB_OSDIRNAMES += mips32/mabi.32/EB=!mips-r1-hard$(is_newlib)/lib +MULTILIB_REUSE += mips32/mabi.32/EB=mips64/mabi.32/EB +MULTILIB_REQUIRED += mips64/mabi=n32/EB +MULTILIB_OSDIRNAMES += mips64/mabi.n32/EB=!mips-r1-hard$(is_newlib)/lib32 +MULTILIB_REQUIRED += mips64/mabi=64/EB +MULTILIB_OSDIRNAMES += mips64/mabi.64/EB=!mips-r1-hard$(is_newlib)/lib64 + +MULTILIB_REQUIRED += mips32/mabi=32/EB/msoft-float +MULTILIB_OSDIRNAMES += mips32/mabi.32/EB/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r1-soft$(is_newlib)/lib +MULTILIB_REUSE += mips32/mabi.32/EB/msoft-float= +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64/mabi.32/EB/msoft-float +MULTILIB_REQUIRED += mips64/mabi=n32/EB/msoft-float +MULTILIB_OSDIRNAMES += mips64/mabi.n32/EB/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r1-soft$(is_newlib)/lib32 +MULTILIB_REQUIRED += mips64/mabi=64/EB/msoft-float +MULTILIB_OSDIRNAMES += mips64/mabi.64/EB/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r1-soft$(is_newlib)/lib64 + +MULTILIB_REQUIRED += mips32/mabi=32/EL +MULTILIB_OSDIRNAMES += mips32/mabi.32/EL=!mipsel-r1-hard$(is_newlib)/lib +MULTILIB_REUSE += mips32/mabi.32/EL=mips64/mabi.32/EL +MULTILIB_REQUIRED += mips64/mabi=n32/EL +MULTILIB_OSDIRNAMES += mips64/mabi.n32/EL=!mipsel-r1-hard$(is_newlib)/lib32 +MULTILIB_REQUIRED += mips64/mabi=64/EL +MULTILIB_OSDIRNAMES += mips64/mabi.64/EL=!mipsel-r1-hard$(is_newlib)/lib64 + +MULTILIB_REQUIRED += mips32/mabi=32/EL/msoft-float +MULTILIB_OSDIRNAMES += mips32/mabi.32/EL/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r1-soft$(is_newlib)/lib +MULTILIB_REUSE += mips32/mabi.32/EL/msoft-float= +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64/mabi.32/EL/msoft-float +MULTILIB_REQUIRED += mips64/mabi=n32/EL/msoft-float +MULTILIB_OSDIRNAMES += mips64/mabi.n32/EL/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r1-soft$(is_newlib)/lib32 +MULTILIB_REQUIRED += mips64/mabi=64/EL/msoft-float +MULTILIB_OSDIRNAMES += mips64/mabi.64/EL/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r1-soft$(is_newlib)/lib64 + +# We will not include any 64 bit mips16 combinations. +MULTILIB_REQUIRED += mips32/mips16/mabi=32/EB +MULTILIB_OSDIRNAMES += mips32/mips16/mabi.32/EB=!mips-r1-mips16-hard +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib +MULTILIB_REQUIRED += mips32/mips16/mabi=32/EB/msoft-float +MULTILIB_OSDIRNAMES += mips32/mips16/mabi.32/EB/msoft-float=!mips-r1-mips16-soft +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib + +MULTILIB_REQUIRED += mips32/mips16/mabi=32/EL +MULTILIB_OSDIRNAMES += mips32/mips16/mabi.32/EL=!mipsel-r1-mips16-hard +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib +MULTILIB_REQUIRED += mips32/mips16/mabi=32/EL/msoft-float +MULTILIB_OSDIRNAMES += mips32/mips16/mabi.32/EL/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r1-mips16-soft +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib + +# Uclibc variants +MULTILIB_REQUIRED += muclibc/mips32r2/mabi=32/EB +MULTILIB_OSDIRNAMES += muclibc/mips32r2/mabi.32/EB=!mips-r2-hard-uclibc/lib +MULTILIB_REUSE += muclibc/mips32r2/mabi.32/EB=muclibc/mips64r2/mabi.32/EB +MULTILIB_REQUIRED += muclibc/mips32r2/mabi=32/EB/mnan=2008 +MULTILIB_OSDIRNAMES += muclibc/mips32r2/mabi.32/EB/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-hard-nan2008-uclibc/lib +MULTILIB_REUSE += muclibc/mips32r2/mabi.32/EB/mnan.2008= +MULTILIB_REUSE := $(MULTILIB_REUSE)muclibc/mips64r2/mabi.32/EB/mnan.2008 + +MULTILIB_REQUIRED += muclibc/mips32r2/mabi=32/EL +MULTILIB_OSDIRNAMES += muclibc/mips32r2/mabi.32/EL=!mipsel-r2-hard-uclibc/lib +MULTILIB_REUSE += muclibc/mips32r2/mabi.32/EL=muclibc/mips64r2/mabi.32/EL +MULTILIB_REQUIRED += muclibc/mips32r2/mabi=32/EL/mnan=2008 +MULTILIB_OSDIRNAMES += muclibc/mips32r2/mabi.32/EL/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-hard-nan2008-uclibc/lib +MULTILIB_REUSE += muclibc/mips32r2/mabi.32/EL/mnan.2008= +MULTILIB_REUSE := $(MULTILIB_REUSE)muclibc/mips64r2/mabi.32/EL/mnan.2008 + +# MIPS Small/Tiny C library variants +MULTILIB_REQUIRED += mclib=small/mips32r6/mabi=32/EB/mnan=2008 +MULTILIB_OSDIRNAMES += mclib.small/mips32r6/mabi.32/EB/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-hard-small/lib +MULTILIB_REUSE += mclib.small/mips32r6/mabi.32/EB/mnan.2008=mclib.small/ +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r6/mabi.32/EB/mnan.2008 +MULTILIB_REQUIRED += mclib=small/mips32r6/mabi=32/EL/mnan=2008 +MULTILIB_OSDIRNAMES += mclib.small/mips32r6/mabi.32/EL/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-hard-small/lib +MULTILIB_REUSE += mclib.small/mips32r6/mabi.32/EL/mnan.2008=mclib.small/ +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r6/mabi.32/EL/mnan.2008 +MULTILIB_REQUIRED += mclib=small/mips32r6/mabi=32/EB/msoft-float +MULTILIB_OSDIRNAMES += mclib.small/mips32r6/mabi.32/EB/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-soft-small/lib +MULTILIB_REUSE += mclib.small/mips32r6/mabi.32/EB/msoft-float=mclib.small/ +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r6/mabi.32/EB/msoft-float +MULTILIB_REQUIRED += mclib=small/mips32r6/mabi=32/EL/msoft-float +MULTILIB_OSDIRNAMES += mclib.small/mips32r6/mabi.32/EL/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-soft-small/lib +MULTILIB_REUSE += mclib.small/mips32r6/mabi.32/EL/msoft-float=mclib.small/ +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r6/mabi.32/EL/msoft-float + +MULTILIB_REQUIRED += mclib=small/mips32r2/mabi=32/EB/mnan=2008 +MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mabi.32/EB/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-hard-nan2008-small/lib +MULTILIB_REUSE += mclib.small/mips32r2/mabi.32/EB/mnan.2008=mclib.small/ +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EB/mnan.2008 +MULTILIB_REQUIRED += mclib=small/mips32r2/mabi=32/EL/mnan=2008 +MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mabi.32/EL/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-hard-nan2008-small/lib +MULTILIB_REUSE += mclib.small/mips32r2/mabi.32/EL/mnan.2008=mclib.small/ +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EL/mnan.2008 +MULTILIB_REQUIRED += mclib=small/mips32r2/mabi=32/EB/msoft-float +MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mabi.32/EB/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-soft-small/lib +MULTILIB_REUSE += mclib.small/mips32r2/mabi.32/EB/msoft-float=mclib.small/ +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EB/msoft-float +MULTILIB_REQUIRED += mclib=small/mips32r2/mabi=32/EL/msoft-float +MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mabi.32/EL/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-soft-small/lib +MULTILIB_REUSE += mclib.small/mips32r2/mabi.32/EL/msoft-float=mclib.small/ +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EL/msoft-float + +MULTILIB_REQUIRED += mclib=tiny/mips32r6/mabi=32/EB/mnan=2008 +MULTILIB_OSDIRNAMES += mclib.tiny/mips32r6/mabi.32/EB/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-hard-tiny/lib +MULTILIB_REUSE += mclib.tiny/mips32r6/mabi.32/EB/mnan.2008= +MULTILIB_REUSE := $(MULTILIB_REUSE)mclib.tiny/mips64r6/mabi.32/EB/mnan.2008 +MULTILIB_REQUIRED += mclib=tiny/mips32r6/mabi=32/EL/mnan=2008 +MULTILIB_OSDIRNAMES += mclib.tiny/mips32r6/mabi.32/EL/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-hard-tiny/lib +MULTILIB_REUSE += mclib.tiny/mips32r6/mabi.32/EL/mnan.2008= +MULTILIB_REUSE := $(MULTILIB_REUSE)mclib.tiny/mips64r6/mabi.32/EL/mnan.2008 +MULTILIB_REQUIRED += mclib=tiny/mips32r6/mabi=32/EB/msoft-float +MULTILIB_OSDIRNAMES += mclib.tiny/mips32r6/mabi.32/EB/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-soft-tiny/lib +MULTILIB_REUSE += mclib.tiny/mips32r6/mabi.32/EB/msoft-float=mclib.tiny/ +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r6/mabi.32/EB/msoft-float +MULTILIB_REQUIRED += mclib=tiny/mips32r6/mabi=32/EL/msoft-float +MULTILIB_OSDIRNAMES += mclib.tiny/mips32r6/mabi.32/EL/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-soft-tiny/lib +MULTILIB_REUSE += mclib.tiny/mips32r6/mabi.32/EL/msoft-float=mclib.tiny/ +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r6/mabi.32/EL/msoft-float + +MULTILIB_REQUIRED += mclib=tiny/mips32r2/mabi=32/EB/mnan=2008 +MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mabi.32/EB/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-hard-nan2008-tiny/lib +MULTILIB_REUSE += mclib.tiny/mips32r2/mabi.32/EB/mnan.2008= +MULTILIB_REUSE := $(MULTILIB_REUSE)mclib.tiny/mips64r2/mabi.32/EB/mnan.2008 +MULTILIB_REQUIRED += mclib=tiny/mips32r2/mabi=32/EL/mnan=2008 +MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mabi.32/EL/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-hard-nan2008-tiny/lib +MULTILIB_REUSE += mclib.tiny/mips32r2/mabi.32/EL/mnan.2008= +MULTILIB_REUSE := $(MULTILIB_REUSE)mclib.tiny/mips64r2/mabi.32/EL/mnan.2008 +MULTILIB_REQUIRED += mclib=tiny/mips32r2/mabi=32/EB/msoft-float +MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mabi.32/EB/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-soft-tiny/lib +MULTILIB_REUSE += mclib.tiny/mips32r2/mabi.32/EB/msoft-float=mclib.tiny/ +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EB/msoft-float +MULTILIB_REQUIRED += mclib=tiny/mips32r2/mabi=32/EL/msoft-float +MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mabi.32/EL/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-soft-tiny/lib +MULTILIB_REUSE += mclib.tiny/mips32r2/mabi.32/EL/msoft-float=mclib.tiny/ +MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EL/msoft-float + +# microMIPS Small/Tiny C library variants +MULTILIB_REQUIRED += mclib=small/mips32r2/mmicromips/mabi=32/EB/mnan=2008 +MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mmicromips/mabi.32/EB/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-hard-nan2008-small +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)/lib +MULTILIB_REQUIRED += mclib=small/mips32r2/mmicromips/mabi=32/EL/mnan=2008 +MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mmicromips/mabi.32/EL/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-hard-nan2008-small +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)/lib +MULTILIB_REQUIRED += mclib=small/mips32r2/mmicromips/mabi=32/EB/msoft-float +MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mmicromips/mabi.32/EB/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-soft-small/lib +MULTILIB_REQUIRED += mclib=small/mips32r2/mmicromips/mabi=32/EL/msoft-float +MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mmicromips/mabi.32/EL/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-soft-small/lib + +MULTILIB_REQUIRED += mclib=tiny/mips32r2/mmicromips/mabi=32/EB/mnan=2008 +MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mmicromips/mabi.32/EB/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-hard-nan2008-tiny/lib +MULTILIB_REQUIRED += mclib=tiny/mips32r2/mmicromips/mabi=32/EL/mnan=2008 +MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mmicromips/mabi.32/EL/mnan.2008= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-hard-nan2008-tiny +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)/lib +MULTILIB_REQUIRED += mclib=tiny/mips32r2/mmicromips/mabi=32/EB/msoft-float +MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mmicromips/mabi.32/EB/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-soft-tiny/lib +MULTILIB_REQUIRED += mclib=tiny/mips32r2/mmicromips/mabi=32/EL/msoft-float +MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mmicromips/mabi.32/EL/msoft-float= +MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-soft-tiny/lib diff --git a/gcc/config/mips/t-mti-elf b/gcc/config/mips/t-mti-elf deleted file mode 100644 index 9655397e4de..00000000000 --- a/gcc/config/mips/t-mti-elf +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright (C) 2012-2024 Free Software Foundation, Inc. -# -# This file is part of GCC. -# -# GCC 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 3, or (at your option) -# any later version. -# -# GCC 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 GCC; see the file COPYING3. If not see -# . - -# The default build is mips32r2, hard-float big-endian. Add mips32, -# soft-float, and little-endian variations. - -MULTILIB_OPTIONS = mips32/mips64/mips64r2 mips16/mmicromips mabi=64 EL msoft-float mnan=2008 -MULTILIB_DIRNAMES = mips32 mips64 mips64r2 mips16 micromips 64 el sof nan2008 -MULTILIB_MATCHES = EL=mel EB=meb mips32r2=mips32r3 mips32r2=mips32r5 mips64r2=mips64r3 mips64r2=mips64r5 - -# The 64 bit ABI is not supported on the mips32 architecture. -MULTILIB_EXCEPTIONS += *mips32*/*mabi=64* - -# The 64 bit ABI is not supported on the mips32r2 architecture. -# Because mips32r2 is the default we can't use that flag to trigger -# the exception so we check for mabi=64 with no specific mips -# architecture flag instead. -MULTILIB_EXCEPTIONS += mabi=64* - -# We do not want to build mips16 versions of mips64* architectures. -MULTILIB_EXCEPTIONS += *mips64*/*mips16* -MULTILIB_EXCEPTIONS += *mips16/mabi=64* - -# We only want micromips for mips32r2 architecture. -MULTILIB_EXCEPTIONS += *mips32/mmicromips* -MULTILIB_EXCEPTIONS += *mips64*/mmicromips* -MULTILIB_EXCEPTIONS += *mmicromips/mabi=64* - -# We do not want nan2008 libraries for soft-float, -# mips32[r1], or mips64[r1]. -MULTILIB_EXCEPTIONS += *msoft-float*/*mnan=2008* -MULTILIB_EXCEPTIONS += *mips32/*mnan=2008* -MULTILIB_EXCEPTIONS += *mips64/*mnan=2008* diff --git a/gcc/config/mips/t-mti-linux b/gcc/config/mips/t-mti-linux deleted file mode 100644 index 4919fd9bc45..00000000000 --- a/gcc/config/mips/t-mti-linux +++ /dev/null @@ -1,158 +0,0 @@ -# Copyright (C) 2012-2024 Free Software Foundation, Inc. -# -# This file is part of GCC. -# -# GCC 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 3, or (at your option) -# any later version. -# -# GCC 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 GCC; see the file COPYING3. If not see -# . - -# The default build is mips32r2, hard-float big-endian. Add mips32, -# soft-float, and little-endian variations. - -MULTILIB_OPTIONS = mips32/mips64/mips64r2 mips16/mmicromips mabi=64 EL msoft-float mnan=2008 -MULTILIB_DIRNAMES = mips32 mips64 mips64r2 mips16 micromips 64 el sof nan2008 -MULTILIB_MATCHES = EL=mel EB=meb mips32r2=mips32r3 mips32r2=mips32r5 mips64r2=mips64r3 mips64r2=mips64r5 - -MULTILIB_REQUIRED = -MULTILIB_OSDIRNAMES = .=mips-r2-hard/lib -MULTILIB_REQUIRED += mips64r2 -MULTILIB_OSDIRNAMES += mips64r2=!mips-r2-hard/lib32 -MULTILIB_REQUIRED += mips64r2/mabi=64 -MULTILIB_OSDIRNAMES += mips64r2/mabi.64=!mips-r2-hard/lib64 - -MULTILIB_REQUIRED += mnan=2008 -MULTILIB_OSDIRNAMES += mnan.2008=!mips-r2-hard-nan2008/lib -MULTILIB_REQUIRED += mips64r2/mnan=2008 -MULTILIB_OSDIRNAMES += mips64r2/mnan.2008=!mips-r2-hard-nan2008/lib32 -MULTILIB_REQUIRED += mips64r2/mabi=64/mnan=2008 -MULTILIB_OSDIRNAMES += mips64r2/mabi.64/mnan.2008=!mips-r2-hard-nan2008/lib64 - -MULTILIB_REQUIRED += msoft-float -MULTILIB_OSDIRNAMES += msoft-float=!mips-r2-soft/lib -MULTILIB_REQUIRED += mips64r2/msoft-float -MULTILIB_OSDIRNAMES += mips64r2/msoft-float=!mips-r2-soft/lib32 -MULTILIB_REQUIRED += mips64r2/mabi=64/msoft-float -MULTILIB_OSDIRNAMES += mips64r2/mabi.64/msoft-float=!mips-r2-soft/lib64 - -#MULTILIB_REQUIRED += msoft-float/mnan=2008 -#MULTILIB_OSDIRNAMES += msoft-float/mnan.2008=!mips-r2-soft-nan2008/lib -#MULTILIB_REQUIRED += mips64r2/msoft-float/mnan=2008 -#MULTILIB_OSDIRNAMES += mips64r2/msoft-float/mnan.2008=!mips-r2-soft-nan2008/lib32 -#MULTILIB_REQUIRED += mips64r2/mabi=64/msoft-float/mnan=2008 -#MULTILIB_OSDIRNAMES += mips64r2/mabi.64/msoft-float/mnan.2008=!mips-r2-soft-nan2008/lib64 - -MULTILIB_REQUIRED += EL -MULTILIB_OSDIRNAMES += EL=!mipsel-r2-hard/lib -MULTILIB_REQUIRED += mips64r2/EL -MULTILIB_OSDIRNAMES += mips64r2/EL=!mipsel-r2-hard/lib32 -MULTILIB_REQUIRED += mips64r2/mabi=64/EL -MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL=!mipsel-r2-hard/lib64 - -MULTILIB_REQUIRED += EL/mnan=2008 -MULTILIB_OSDIRNAMES += EL/mnan.2008=!mipsel-r2-hard-nan2008/lib -MULTILIB_REQUIRED += mips64r2/EL/mnan=2008 -MULTILIB_OSDIRNAMES += mips64r2/EL/mnan.2008=!mipsel-r2-hard-nan2008/lib32 -MULTILIB_REQUIRED += mips64r2/mabi=64/EL/mnan=2008 -MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL/mnan.2008=!mipsel-r2-hard-nan2008/lib64 - -MULTILIB_REQUIRED += EL/msoft-float -MULTILIB_OSDIRNAMES += EL/msoft-float=!mipsel-r2-soft/lib -MULTILIB_REQUIRED += mips64r2/EL/msoft-float -MULTILIB_OSDIRNAMES += mips64r2/EL/msoft-float=!mipsel-r2-soft/lib32 -MULTILIB_REQUIRED += mips64r2/mabi=64/EL/msoft-float -MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL/msoft-float=!mipsel-r2-soft/lib64 - -#MULTILIB_REQUIRED += EL/msoft-float/mnan=2008 -#MULTILIB_OSDIRNAMES += EL/msoft-float/mnan.2008=!mipsel-r2-soft-nan2008/lib -#MULTILIB_REQUIRED += mips64r2/EL/msoft-float/mnan=2008 -#MULTILIB_OSDIRNAMES += mips64r2/EL/msoft-float/mnan.2008=!mipsel-r2-soft-nan2008/lib32 -#MULTILIB_REQUIRED += mips64r2/mabi=64/EL/msoft-float/mnan=2008 -#MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL/msoft-float/mnan.2008=!mipsel-r2-soft-nan2008/lib64 - -# We will not include any 64 bit mips16 combinations. -MULTILIB_REQUIRED += mips16 -MULTILIB_OSDIRNAMES += mips16=!mips-r2-mips16-hard/lib -MULTILIB_REQUIRED += mips16/mnan=2008 -MULTILIB_OSDIRNAMES += mips16/mnan.2008=!mips-r2-mips16-hard-nan2008/lib -MULTILIB_REQUIRED += mips16/msoft-float -MULTILIB_OSDIRNAMES += mips16/msoft-float=!mips-r2-mips16-soft/lib -#MULTILIB_REQUIRED += mips16/msoft-float/mnan=2008 -#MULTILIB_OSDIRNAMES += mips16/msoft-float/mnan.2008=!mips-r2-mips16-soft-nan2008/lib - -MULTILIB_REQUIRED += mips16/EL -MULTILIB_OSDIRNAMES += mips16/EL=!mipsel-r2-mips16-hard/lib -MULTILIB_REQUIRED += mips16/EL/mnan=2008 -MULTILIB_OSDIRNAMES += mips16/EL/mnan.2008=!mipsel-r2-mips16-hard-nan2008/lib -MULTILIB_REQUIRED += mips16/EL/msoft-float -MULTILIB_OSDIRNAMES += mips16/EL/msoft-float=!mipsel-r2-mips16-soft/lib -#MULTILIB_REQUIRED += mips16/EL/msoft-float/mnan=2008 -#MULTILIB_OSDIRNAMES += mips16/EL/msoft-float/mnan.2008=!mipsel-r2-mips16-soft-nan2008/lib - -MULTILIB_REQUIRED += mmicromips -MULTILIB_OSDIRNAMES += mmicromips=!micromips-r2-hard/lib -MULTILIB_REQUIRED += mmicromips/mnan=2008 -MULTILIB_OSDIRNAMES += mmicromips/mnan.2008=!micromips-r2-hard-nan2008/lib -MULTILIB_REQUIRED += mmicromips/msoft-float -MULTILIB_OSDIRNAMES += mmicromips/msoft-float=!micromips-r2-soft/lib -#MULTILIB_REQUIRED += mmicromips/msoft-float/mnan=2008 -#MULTILIB_OSDIRNAMES += mmicromips/msoft-float/mnan.2008=!micromips-r2-soft-nan2008/lib - -MULTILIB_REQUIRED += mmicromips/EL -MULTILIB_OSDIRNAMES += mmicromips/EL=!micromipsel-r2-hard/lib -MULTILIB_REQUIRED += mmicromips/EL/mnan=2008 -MULTILIB_OSDIRNAMES += mmicromips/EL/mnan.2008=!micromipsel-r2-hard-nan2008/lib -MULTILIB_REQUIRED += mmicromips/EL/msoft-float -MULTILIB_OSDIRNAMES += mmicromips/EL/msoft-float=!micromipsel-r2-soft/lib -#MULTILIB_REQUIRED += mmicromips/EL/msoft-float/mnan=2008 -#MULTILIB_OSDIRNAMES += mmicromips/EL/msoft-float/mnan.2008=!micromipsel-r2-soft-nan2008/lib - -# Version 1 multilibs - -MULTILIB_REQUIRED += mips32 -MULTILIB_OSDIRNAMES += mips32=!mips-r1-hard/lib -MULTILIB_REQUIRED += mips64 -MULTILIB_OSDIRNAMES += mips64=!mips-r1-hard/lib32 -MULTILIB_REQUIRED += mips64/mabi=64 -MULTILIB_OSDIRNAMES += mips64/mabi.64=!mips-r1-hard/lib64 - -MULTILIB_REQUIRED += mips32/msoft-float -MULTILIB_OSDIRNAMES += mips32/msoft-float=!mips-r1-soft/lib -MULTILIB_REQUIRED += mips64/msoft-float -MULTILIB_OSDIRNAMES += mips64/msoft-float=!mips-r1-soft/lib32 -MULTILIB_REQUIRED += mips64/mabi=64/msoft-float -MULTILIB_OSDIRNAMES += mips64/mabi.64/msoft-float=!mips-r1-soft/lib64 - -MULTILIB_REQUIRED += mips32/EL -MULTILIB_OSDIRNAMES += mips32/EL=!mipsel-r1-hard/lib -MULTILIB_REQUIRED += mips64/EL -MULTILIB_OSDIRNAMES += mips64/EL=!mipsel-r1-hard/lib32 -MULTILIB_REQUIRED += mips64/mabi=64/EL -MULTILIB_OSDIRNAMES += mips64/mabi.64/EL=!mipsel-r1-hard/lib64 - -MULTILIB_REQUIRED += mips32/EL/msoft-float -MULTILIB_OSDIRNAMES += mips32/EL/msoft-float=!mipsel-r1-soft/lib -MULTILIB_REQUIRED += mips64/EL/msoft-float -MULTILIB_OSDIRNAMES += mips64/EL/msoft-float=!mipsel-r1-soft/lib32 -MULTILIB_REQUIRED += mips64/mabi=64/EL/msoft-float -MULTILIB_OSDIRNAMES += mips64/mabi.64/EL/msoft-float=!mipsel-r1-soft/lib64 - -# We will not include any 64 bit mips16 combinations. -MULTILIB_REQUIRED += mips32/mips16 -MULTILIB_OSDIRNAMES += mips32/mips16=!mips-r1-mips16-hard/lib -MULTILIB_REQUIRED += mips32/mips16/msoft-float -MULTILIB_OSDIRNAMES += mips32/mips16/msoft-float=!mips-r1-mips16-soft/lib - -MULTILIB_REQUIRED += mips32/mips16/EL -MULTILIB_OSDIRNAMES += mips32/mips16/EL=!mipsel-r1-mips16-hard/lib -MULTILIB_REQUIRED += mips32/mips16/EL/msoft-float -MULTILIB_OSDIRNAMES += mips32/mips16/EL/msoft-float=!mipsel-r1-mips16-soft/lib diff --git a/gcc/configure b/gcc/configure index 150ab616414..1341e1cbd3f 100755 --- a/gcc/configure +++ b/gcc/configure @@ -853,6 +853,7 @@ enable_fixed_point enable_decimal_float DEFAULT_INSNEMIT_PARTITIONS DEFAULT_MATCHPD_PARTITIONS +with_multi_buildlist with_float with_cpu enable_multiarch @@ -7870,6 +7871,9 @@ $as_echo "$enable_multiarch$ma_msg_suffix" >&6; } +# needed for restricting the fixedincludes multilibs that we install + + # default stack clash protection guard size as power of twos in bytes. # Please keep these in sync with params.def. stk_clash_min=12 @@ -21454,7 +21458,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 21457 "configure" +#line 21461 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -21560,7 +21564,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 21563 "configure" +#line 21567 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/gcc/configure.ac b/gcc/configure.ac index bdb22d53e2c..ee98191411e 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -877,6 +877,9 @@ AC_MSG_RESULT($enable_multiarch$ma_msg_suffix) AC_SUBST(with_cpu) AC_SUBST(with_float) +# needed for restricting the fixedincludes multilibs that we install +AC_SUBST(with_multi_buildlist) + # default stack clash protection guard size as power of twos in bytes. # Please keep these in sync with params.def. stk_clash_min=12 diff --git a/gcc/genmultilib b/gcc/genmultilib index 85b241cd72a..5df8148e031 100644 --- a/gcc/genmultilib +++ b/gcc/genmultilib @@ -500,9 +500,6 @@ for rrule in ${multilib_reuse}; do echo "The rule ${rrule} contains an option absent from MULTILIB_OPTIONS." >&2 exit 1 fi - else - echo "The rule ${rrule} is trying to reuse nonexistent multilib." >&2 - exit 1 fi done