From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eric Ludlam Newsgroups: gmane.emacs.devel Subject: Re: IDE Date: Wed, 14 Oct 2015 20:14:22 -0400 Message-ID: <561EEFDE.7000809@gmail.com> References: <5610207A.2000300@harpegolden.net> <83fv1r3gzp.fsf@gnu.org> <83bncf3f9k.fsf@gnu.org> <5610E0BC.8090902@online.de> <83si5r106e.fsf@gnu.org> <831td9z18h.fsf@gnu.org> <5612E996.7090700@yandex.ru> <83bnc7tavr.fsf@gnu.org> <5618C92A.3040207@yandex.ru> <83a8rrt9ag.fsf@gnu.org> <5618D376.1080700@yandex.ru> <831td3t62e.fsf@gnu.org> <561A6199.1020901@cumego.com> <561B9D87.70504@yandex.ru> <561C2C17.3090503@cumego.com> <561DC1CA.6090901@siege-engine.com> <561E3FB6.8010407@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1444868149 1771 80.91.229.3 (15 Oct 2015 00:15:49 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 15 Oct 2015 00:15:49 +0000 (UTC) Cc: emacs-devel@gnu.org To: Dmitry Gutov , Eric Ludlam , =?UTF-8?Q?Przemys=c5=82aw_Wojnowski?= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Oct 15 02:15:33 2015 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1ZmWCj-0003dy-0a for ged-emacs-devel@m.gmane.org; Thu, 15 Oct 2015 02:15:33 +0200 Original-Received: from localhost ([::1]:45145 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZmWCi-0006AU-E3 for ged-emacs-devel@m.gmane.org; Wed, 14 Oct 2015 20:15:32 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43558) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZmWBg-00062o-3V for emacs-devel@gnu.org; Wed, 14 Oct 2015 20:14:29 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZmWBc-0005jt-T6 for emacs-devel@gnu.org; Wed, 14 Oct 2015 20:14:28 -0400 Original-Received: from mail-qk0-x230.google.com ([2607:f8b0:400d:c09::230]:34366) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZmWBc-0005jl-Nk for emacs-devel@gnu.org; Wed, 14 Oct 2015 20:14:24 -0400 Original-Received: by qkfm62 with SMTP id m62so28322000qkf.1 for ; Wed, 14 Oct 2015 17:14:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-type:content-transfer-encoding; bh=dXJrzxNRuRXJJ/Rr3Y56e3rAShb18lwtyGn+WBI7gfk=; b=swLvHjr1iSMb3m2KGGSEhL40CM5suI3sNj+axAb/1KE8rsQDGFbPIM0nfpdjJJJKnM SGlWhvRy80nhqPoNS8NnsAxlFdM7AM4vLCxoRJd+qw5GKVU11He+zPmMuriM1f6JA/2n dTI3VQ/vULEZI4GSzSsfvWHrj/efd8EwatgR0tO4tvJzz4Zulr14H2Kf/xBYvYaeH5C8 FwKJbJR1Y07g9LBh/HIf4Fv9b//ZWuEYz1CC0iVtR3/WfjhRMOR/lO8nbv4Tho9Ip88X hI4BxFphPLV/L75b8W2kBiN/d5VdLpGSGEIdrUAhZxmib01Zr4iEGnEhIAUecN2xFXBg d62Q== X-Received: by 10.55.195.135 with SMTP id r7mr8233968qkl.4.1444868063958; Wed, 14 Oct 2015 17:14:23 -0700 (PDT) Original-Received: from [192.168.1.202] (pool-71-184-198-118.bstnma.fios.verizon.net. [71.184.198.118]) by smtp.googlemail.com with ESMTPSA id d107sm1736139qga.28.2015.10.14.17.14.22 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 14 Oct 2015 17:14:22 -0700 (PDT) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 In-Reply-To: <561E3FB6.8010407@yandex.ru> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400d:c09::230 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:191600 Archived-At: On 10/14/2015 07:42 AM, Dmitry Gutov wrote: > On 10/14/2015 05:45 AM, Eric Ludlam wrote: > >> This is how EDE (a part of CEDET) is setup and works. There are >> "projects", and in projects there are "targets". There are project >> build commands, and target build commands. Each project or target can >> have language specific features for setting up CEDET's parsers. > > Is there a particular reason to have the notion of "target" in the > project API? If the need is to simply disambiguate commands with the > same name, the commands could be prefixed with the target name, e.g. > "release:compile", "release:test". Historically, the 'targets' matched the makefile targets, and was used to generate a Makefile from a configuration. For the other projects, the targets simply group source code together so if you use the 'compile' key sequence, you get something appropriate for that group of source files. Sometime it is very simple so that .texi or .cpp execute different compile steps. Sometimes there is no difference. >> There is a set of different base classes for projects, and many >> specializations for various flavors of java projects such as maven and >> ant, C++ projects, lisp projects, and more. > > What do you do if several different project types use the same build > system (and so the logic to parse the build targets is the same)? > > What would you do if a certain project type can be used with different > build systems? Create an inheriting sub-type for each of them? > > That approach looks worrying if we get several varying pieces of > behavior like that: for example, different build tools and different > test frameworks. > . > It's fine for several project systems to do the same thing. They could share some implementation or not, depending the way any set of lisp programs might. Many shared behaviours are pushed up in the class hierarchy. For example, handling include paths, java classpath, etc. For most things like 'compile', the similar code is about appending the string "make " with some target, or whatever it might be, so it isn't too deep. There are some very simple projects in EDE, such as "emacs" which just knows how to find emacs.c and mark that directory tree as a project, and it knows how to assemble some compile and debug commands. It also knows how to setup C preprocessor symbols and include paths. Other project types are very complex, such as those that let you configure a project using 'customize' and then generate Makefiles for you. That was a bit of a stretch. Some are in between, such as the 'android' project type that finds the AndroidManifest.xml file, tags that tree, and queries your android SDK for build tools and paths to set everything up for you. In one of these threads someone noted that it should be easy to setup and transparent. When someone's project matches a supported type, all you need to do is turn on EDE and it then sets up the Semantic details for you. Most C/C++ projects are not as magical, and need a more hands on approach, and that's where things get tricky. Eric