Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #129978

Re: Clearly everyone else likes to do things the hard way

Subject Re: Clearly everyone else likes to do things the hard way
Newsgroups comp.lang.c
References (6 earlier) <487f17fe-1347-435b-a9ea-618690b4686a@googlegroups.com> <WKqEC.12056$Pv4.2909@fx23.am4> <ad6cre-s03.ln1@tanner.seckford.org> <rL_EC.53102$7B3.31501@fx13.am4> <944e11bd-156f-4237-a7d3-7fe8df6ff7e6@googlegroups.com>
From bartc <bc@freeuk.com>
Message-ID <hrJFC.29444$7b4.26558@fx12.am4> (permalink)
Organization virginmedia.com
Date 2018-04-30 19:41 +0100

Show all headers | View raw


On 30/04/2018 18:16, supercat@casperkitty.com wrote:
> On Saturday, April 28, 2018 at 8:34:25 AM UTC-5, Bart wrote:
>> Effectively the build instructions for the project are written in a
>> different language (possibly, several), with extra dependencies other
>> than the 'C' compiler that is expected. Instructions that are hard to
>> understand.
> 
> A very useful trait of the vast majority of hosted C implementations is
> that a "text" file written by the implementation will use the same format
> as a source file.  Thus, it should be possible to distribute a project as
> one files--myThing.c.  To build the project, simply compile myThing.c and
> run the executable in the same directory as the source; it can then give a
> message with whatever command-line options it needs to control
> configuration, and when it's invoked with those options it can then use
> information in myThing.c [perhaps embedded within a giant comment] to
> construct a source file that can be built to produce the final application,
> and output any special requirements for building that file.

I've just tried something like that (not C code):

     import clib
     import mlib

     proc start=
         ref char sourcecode = strinclude "bcc64.c"

         writefile("prog.c", sourcecode, strlen(sourcecode))

         if system("gcc prog.c -oprog.exe") then
             println "Build error"
         else
             println "Successfully compiled prog.c to prog.exe"
         fi
     end

This runs and produces prog.exe (which also runs). But in this original 
form, there are two source files: this one, and bcc64.c which resides on 
disk. Translated to C however, it is just one file (of size 0.5MB), 
which includes this line:

static char * sourcecode="/* MCC Experimental C Compiler\r\n\r\n .... "

which is 480,000 characters long (somewhat longer than the original 
because of the escape codes).

Compiling that C version and running it also works. Since this is a C 
program, and a small one apart from the string, it can be written in 
portable code (another than the need to deal with very long strings), 
and can interrogate the host system for the most appropriate C compiler 
settings. And then build the real program.



> Although this would be far from the ideal format in cases where someone
> needs to make changes to the program, especially if those changes need to
> be integrated back into the main branch, it would satisfy the far more
> common usage case where someone simply wants to use the program on a
> generic system for which it has not previously been built.  The program
> that generates the main source file from the .c file could be very
> simple [mostly outputting the contents of the comment verbatim, but
> skipping certain parts based upon invocation options] or it could be a much
> more complicated program for some other language that translates code in
> the .txt file from some other language into C, or it could do just about
> any platform-neutral task that might otherwise require use of non-standard
> utilities.  The key point would be that use of the program should not
> require anything beyond a C implementation that generates programs that do
> file I/O in via means compatible with the compiler itself.

If I'm on the right lines then that's what the example above demonstrates.

-- 
bartc

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

gcc_centric C code bartc <bc@freeuk.com> - 2018-04-25 16:21 +0100
  gcc_centric C code Chad <cdalten@gmail.com> - 2018-04-25 08:34 -0700
  Re: gcc_centric C code Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-04-25 16:41 +0100
    Re: gcc_centric C code Spiros Bousbouras <spibou@gmail.com> - 2018-04-25 16:19 +0000
      Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-25 18:02 +0100
        Re: gcc_centric C code Nick Bowler <nbowler@draconx.ca> - 2018-04-25 17:15 +0000
          Re: gcc_centric C code Robert Wessel <robertwessel2@yahoo.com> - 2018-04-25 12:33 -0500
          Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-25 20:51 +0100
            Re: gcc_centric C code supercat@casperkitty.com - 2018-04-25 13:01 -0700
              Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-25 21:21 +0100
            Re: gcc_centric C code jameskuyper@verizon.net - 2018-04-25 13:45 -0700
        Re: gcc_centric C code Spiros Bousbouras <spibou@gmail.com> - 2018-04-25 17:20 +0000
      Re: gcc_centric C code supercat@casperkitty.com - 2018-04-25 10:30 -0700
        Re: gcc_centric C code Robert Wessel <robertwessel2@yahoo.com> - 2018-04-25 12:35 -0500
          Re: gcc_centric C code Keith Thompson <kst-u@mib.org> - 2018-04-25 10:54 -0700
            Re: gcc_centric C code Philipp Klaus Krause <pkk@spth.de> - 2018-04-25 20:27 +0200
              Re: gcc_centric C code Keith Thompson <kst-u@mib.org> - 2018-04-25 12:38 -0700
              Re: gcc_centric C code Robert Wessel <robertwessel2@yahoo.com> - 2018-04-25 19:53 -0500
                Re: gcc_centric C code Keith Thompson <kst-u@mib.org> - 2018-04-25 18:13 -0700
                Re: gcc_centric C code Nick Bowler <nbowler@draconx.ca> - 2018-04-26 15:16 +0000
                Re: gcc_centric C code Tim Rentsch <txr@alumni.caltech.edu> - 2018-04-27 08:17 -0700
                Re: gcc_centric C code Philipp Klaus Krause <pkk@spth.de> - 2018-04-26 08:03 +0200
                Re: gcc_centric C code Nick Bowler <nbowler@draconx.ca> - 2018-04-26 14:30 +0000
                Re: gcc_centric C code jameskuyper@verizon.net - 2018-04-26 08:26 -0700
                Re: gcc_centric C code Philipp Klaus Krause <pkk@spth.de> - 2018-04-26 19:04 +0200
                Re: gcc_centric C code Ian Collins <ian-news@hotmail.com> - 2018-04-27 07:48 +1200
                Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-26 21:08 +0100
                Re: gcc_centric C code Ian Collins <ian-news@hotmail.com> - 2018-04-27 08:18 +1200
                Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-26 21:44 +0100
                Re: gcc_centric C code Ian Collins <ian-news@hotmail.com> - 2018-04-27 09:01 +1200
                Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-26 23:16 +0100
                Re: gcc_centric C code Ian Collins <ian-news@hotmail.com> - 2018-04-27 10:27 +1200
                Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-26 23:48 +0100
                Re: gcc_centric C code Ian Collins <ian-news@hotmail.com> - 2018-04-27 20:41 +1200
                Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-27 11:51 +0100
                Re: gcc_centric C code Ian Collins <ian-news@hotmail.com> - 2018-04-28 07:32 +1200
                Re: gcc_centric C code Steven Petruzzellis <frelwizzen@gmail.com> - 2018-04-28 04:34 -0700
                Re: gcc_centric C code Steven Petruzzellis <frelwizzen@gmail.com> - 2018-04-26 23:05 -0700
                Re: gcc_centric C code jacobnavia <jacob@jacob.remcomp.fr> - 2018-04-27 00:52 +0200
                Re: gcc_centric C code supercat@casperkitty.com - 2018-04-26 16:23 -0700
                Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-28 11:24 +0100
                Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-28 01:42 +0100
                Re: gcc_centric C code Dan Purgert <dan@djph.net> - 2018-04-26 21:40 +0000
                Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-26 23:34 +0100
                Re: gcc_centric C code "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-04-26 14:13 -0700
                Re: gcc_centric C code "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-04-26 14:16 -0700
            Re: gcc_centric C code Tim Rentsch <txr@alumni.caltech.edu> - 2018-04-27 08:08 -0700
              Re: gcc_centric C code Keith Thompson <kst-u@mib.org> - 2018-04-27 09:11 -0700
                Re: gcc_centric C code supercat@casperkitty.com - 2018-04-27 09:26 -0700
                Re: gcc_centric C code Tim Rentsch <txr@alumni.caltech.edu> - 2018-04-27 09:49 -0700
          Re: gcc_centric C code supercat@casperkitty.com - 2018-04-25 12:31 -0700
            Re: gcc_centric C code Nick Bowler <nbowler@draconx.ca> - 2018-04-25 20:13 +0000
              Re: gcc_centric C code supercat@casperkitty.com - 2018-04-25 13:50 -0700
        Re: gcc_centric C code Nick Bowler <nbowler@draconx.ca> - 2018-04-25 18:02 +0000
      Re: gcc_centric C code Steven Petruzzellis <frelwizzen@gmail.com> - 2018-04-25 22:39 -0700
    Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-25 18:36 +0100
      Re: gcc_centric C code Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-04-25 23:15 +0100
        Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-26 02:02 +0100
          Re: gcc_centric C code Keith Thompson <kst-u@mib.org> - 2018-04-25 18:28 -0700
          Re: gcc_centric C code Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-04-26 11:45 +0100
            Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-26 14:53 +0100
              Re: gcc_centric C code Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-04-26 23:38 +0100
                Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-27 00:31 +0100
                Re: gcc_centric C code Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-04-27 00:47 +0100
                Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-27 02:28 +0100
                Re: gcc_centric C code Thiago Adams <thiago.adams@gmail.com> - 2018-04-27 03:44 -0700
                Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-05-03 13:57 +0100
                Re: gcc_centric C code Thiago Adams <thiago.adams@gmail.com> - 2018-05-03 11:02 -0700
                Re: gcc_centric C code Thiago Adams <thiago.adams@gmail.com> - 2018-05-03 11:07 -0700
                Re: gcc_centric C code Steven Petruzzellis <frelwizzen@gmail.com> - 2018-05-03 11:13 -0700
                Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-05-03 19:50 +0100
                Re: gcc_centric C code Thiago Adams <thiago.adams@gmail.com> - 2018-05-03 13:37 -0700
                Re: gcc_centric C code Thiago Adams <thiago.adams@gmail.com> - 2018-05-03 13:44 -0700
                Re: gcc_centric C code Thiago Adams <thiago.adams@gmail.com> - 2018-05-11 10:25 -0700
            Re: gcc_centric C code Steven Petruzzellis <frelwizzen@gmail.com> - 2018-04-26 07:01 -0700
          Re: Clearly everyone else likes to do things the hard way Noob <root@127.0.0.1> - 2018-04-26 14:51 +0200
            Re: Clearly everyone else likes to do things the hard way mark.bluemel@gmail.com - 2018-04-26 07:09 -0700
              Re: Clearly everyone else likes to do things the hard way gazelle@shell.xmission.com (Kenny McCormack) - 2018-04-26 17:05 +0000
                Re: Clearly everyone else likes to do things the hard way bartc <bc@freeuk.com> - 2018-04-26 18:38 +0100
                Re: Clearly everyone else likes to do things the hard way 1alvinalbrecht1@gmail.com - 2018-04-26 11:34 -0700
                Re: Clearly everyone else likes to do things the hard way bartc <bc@freeuk.com> - 2018-04-26 21:36 +0100
                Re: Clearly everyone else likes to do things the hard way C W Rose <cwr@seckford.org> - 2018-04-27 19:23 +0100
                Re: Clearly everyone else likes to do things the hard way bartc <bc@freeuk.com> - 2018-04-28 14:34 +0100
                Re: Clearly everyone else likes to do things the hard way Steven Petruzzellis <frelwizzen@gmail.com> - 2018-04-28 10:32 -0700
                Re: Clearly everyone else likes to do things the hard way supercat@casperkitty.com - 2018-04-30 10:16 -0700
                Re: Clearly everyone else likes to do things the hard way bartc <bc@freeuk.com> - 2018-04-30 19:41 +0100
                Re: Clearly everyone else likes to do things the hard way supercat@casperkitty.com - 2018-04-30 12:11 -0700
                Re: Clearly everyone else likes to do things the hard way scott@slp53.sl.home (Scott Lurndal) - 2018-04-30 19:14 +0000
                Re: Clearly everyone else likes to do things the hard way scott@slp53.sl.home (Scott Lurndal) - 2018-04-30 19:12 +0000
                Re: Clearly everyone else likes to do things the hard way bartc <bc@freeuk.com> - 2018-04-30 21:19 +0100
                Re: Clearly everyone else likes to do things the hard way Steven Petruzzellis <frelwizzen@gmail.com> - 2018-04-30 19:23 -0700
                Re: Clearly everyone else likes to do things the hard way Philipp Klaus Krause <pkk@spth.de> - 2018-04-26 19:45 +0200
      Re: gcc_centric C code luser droog <luser.droog@gmail.com> - 2018-04-25 21:56 -0700
        Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-26 11:06 +0100
          Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-26 11:27 +0100
      Re: gcc_centric C code antispam@math.uni.wroc.pl - 2018-04-26 17:00 +0000
  Re: gcc_centric C code Thiago Adams <thiago.adams@gmail.com> - 2018-04-25 09:26 -0700
  Re: gcc_centric C code Jorgen Grahn <grahn+nntp@snipabacken.se> - 2018-04-26 12:39 +0000
    Re: gcc_centric C code gazelle@shell.xmission.com (Kenny McCormack) - 2018-04-26 13:09 +0000
  Re: gcc_centric C code Wouter Verhelst <w@uter.be> - 2018-04-26 13:26 +0200
    Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-26 18:03 +0100
    Re: gcc_centric C code Steven Petruzzellis <frelwizzen@gmail.com> - 2018-04-26 14:32 -0700
  Re: gcc_centric C code Tim Rentsch <txr@alumni.caltech.edu> - 2018-04-27 09:41 -0700
    Re: gcc_centric C code bartc <bc@freeuk.com> - 2018-04-27 19:37 +0100

csiph-web