[comp.sys.amiga.programmer] HELP! Installing PDC _or_ NorthC!!!

jtreworgy@eagle.wesleyan.edu (03/14/91)

Hello.. Can anyone offer any help or advice or detailed sets of instructions on
how to install the PDC compiler OR the NorthC compiler??? I have had PDC for a
long time and have spend God knows how many hours trying to get it to compiler
a program (never can get it to recognize libraries and/or includes). It always
comes up with things like "unknown symbol _printf"or whatever I was trying to
do. I have the Amiga developer's disks with amiga.lib and all, I just don't
know what to do with the files.

As for NorthC, the damn thing is SUPPOSED to work by itself... it comes with
very explicit instructions for creating programs, and I get the same old
yarn about _printf (after some messing around I got it to work until the linker
but then it complained about _main).

I am sorry if this seems vague. I obviously haven't done much amiga programming
but I've done plenty of C programming on other machines and would love to get
either one of the beasties working, and am getting very frustrated with how
the instructions for both these programs make it look reeeal easy yet I can't
even make either one give me the time of day. (figuratively). Any help would be
very much appreciated....    As for PDC, I got it from FTP; I tried to buy the
original disks from the author on two different occasions but once my letter
was returned, the next time I didn't get it back (don't remember if the check
was cashed or not) but I never got any program in the mail either... I don't
know if there is any advantage to having the original distribution disks over
the archives I got but point is moot anyway. Thanks,
-- 
James A. Treworgy    -- No quote here for insurance reasons --
jtreworgy@eagle.wesleyan.edu         jtreworgy@WESLEYAN.BITNET

Michael_Kelly@61ssc1.ceo.dg.com (03/14/91)

I don't have any experience with PDC but I did get NorthC and ran 
into similar problems.
The problem stems from the fact that NorthC does not flag symbols 
(like _printf for example) as external references when it creates
the .s file.
There is however, an easy fix for this (which did take me a while to 
find though).
If you call a68k with a -g switch on the command line, eg:
a68k -g -ohello.o hello.s
this causes a68k to treat all undefined symbols as global and it 
doesn't flag any errors. It is then up to Blink to sort it all out.
Hope this helps,
Michael.
  
michael@61ssc1.ceo.dg.com
  
I speak for myself. My company employs other people to speak on its 
behalf.
I can't afford to do that!
  

petersen@sp66.csrd.uiuc.edu (Paul Petersen) (03/15/91)

As far as I know the most recent version of PDC that has been released
is 3.33 on ux1.cso.uiuc.edu:amiga/misc/PDC.  It should be relatively
trivial to compile the programs.  PDC comes in three archives.  You should
get all three and de-zoo (x//) them each on separate floppies or in separate
directories on the hard-disk.

PDC currently requires AmigaDOS 1.3

If you have de-zooed the pdc-program.zoo file into the directory
dh0:PDC-3.33, then

1> cd dh0:PDC-3.33
2> execute s/start
3> path add PDC:bin
4> cd sample
5> ccx hello.c
6> hello

Please read the documentation about Using_PDC and the Release_Notes.  These
instructions are really only approximate as I do not have my amiga in front
of me at this moment.  If they do not work, please try to report why, and
maybe I can figure out what went wrong.

PDC has LOTS of bugs/differences from K&R and ANSI C.  However it works
most of the time, is free and includes ALL source code.  If you want to 
make it better, be my guest.

 ... Use the source Luke ...

--------------------------- FILE: s/start ------------------------------------
; This script is meant to be run from the top of your PDC directory hierarchy.
; It will set the necessary environment variables and will assign the logical
; device "pdc:" to a common point for referencing PDC-related files.
;
assign pdc: ""
setenv PDCLibs "PDC.Lib; Amiga.lib; Math.lib"
setenv PDCLibDirs "PDC:lib"
setenv PDCIncDirs "PDC:include"
------------------------------------------------------------------------------

Due to changes since the release Lionel and I do not have as much time
available to do snail-mail distributions of PDC.  There is no guarantee that
any requests received will be processed in a timely manner, so it might
be better NOT to ask for PDC by mail.  However, it is still available by
anonymous FTP.

--------------------------- FILE: Using_PDC ----------------------------------

README - Some remarks and words of advice on using PDC
------------------------------------------------------

The major pieces of this distribution are the compiler (PDC), the assembler
(A68k), the linker (BLink), and the libraries and header files.  Tying
everything together is a "front-end" program (CCX), which takes care of a
lot of the drudgery behind creating an executable program.

Things to do before invoking CCX
--------------------------------

CCX requires that the following environment variables be set:

        PDCLibs - Lists the libraries with which to link
        PDCLibDirs - Lists the directories to search for libraries
        PDCIncDirs - Lists the directories to search for include files

Multiple entries for an environment variable are delimited by
semicolons.  See the file s/start on this disk and the documentation to
CCX in the doc directory on this disk for examples of how to use the
environment variables. 

As for your search path, at the very least you ought to have in it the
directory containg CCX, PDC, A68k, and BLink.  This is necessary if you
plan to use CCX. 

Stack size for running PDC should be above the CLI's default of 4K.
20000 bytes is the lowest recommended size.  32000 bytes is sufficient
for most things, up to and including recompiling PDC and its libraries.
To be safe, it is best to set a good large stack size in your startup-sequence,
because forgetting later on usually results in a visit from the Guru.  Should
PDC ever guru on you, the first step to take is bump up the stack.  
  
In summary:

        - Set the environment variables PDCLibs, PDCLibDirs, and PDCIncDirs.
	- CCX requires that PDC, A68k, and Blink be in your search path.
	- PDC needs a MINIMUM of 20K of stack space to run safely.


Headers, Libraries, and Startup code
------------------------------------

Standard C headers can be found in the directory "include" on this disk.
See below for more information on Amiga-specific headers.

The PDC Software Distribution includes the three library files necessary to
compile programs written for the Amiga.  Here are some short descriptions of
them:

* Amiga.lib

     Amiga.lib contains the hundreds of assembly language stubs, or
     "stub-routines", that allow programs written in C to call the Amiga's
     standard set of shared libraries.  It also contains a few functions to
     aid in the construction and destruction of some common entities (eg,
     CreateTask, DeletePort, NewList, etc.).  The version of Amiga.lib
     included with PDC can be built automatically by invoking the makefile
     contained in the "lib/src" directory on this disk and providing your
     Workbench 1.3 Extras disk. 

* PDC.lib:

     PDC.lib contains a large subset of the ANSI C functions, as well as some
     runtime support functions and other extensions.  A (currently, partial)
     list of the functions provided in PDC.lib and Math.lib can be found in
     the file MANIFEST in the LibSrc directory on the Libs and Utils disk. 

* Math.lib:

     Math.lib contains library and runtime support functions for performing
     floating point math.  Currently, PDC supports only IEEE double precision
     math via the Amiga's shared libraries, ieeedoubbas.library and
     ieeedoubtrans.library.  As you may realize, this default requires that
     Workbench 1.3 be available at runtime in order use the transcendental
     functions.  The source code for the transcendental functions is
     provided, though, if you care to use it.

Most programs written specifically for the Amiga, including much source
code to this distribution, require the Amiga header files in order to
compile.  Those who also own one of the commercial C compilers can
generally get away with using the headers that come with those compilers
[1].  In any case, I recommend that you obtain the Native Developer
Update (NDU) from Commodore-Amiga Technical Support (CATS).  The NDU
includes commented and stripped versions of the Amiga C and assembly
language headers, the fabled Autodocs, a healthy batch of README files,
and Commodore's standard libraries and utilities.  Altogether, you get
four disks for US$20; an excellent deal.

--

University of Illinois, Urbana-Champaign
Center for Supercomputing Research and Development

    UUCP:    {uunet,convex}!uiucuxc!uicsrd!petersen
    INTERNET: petersen@uicsrd.csrd.uiuc.edu

GKZ117@uriacc.uri.edu (F. Michael Theilig) (03/15/91)

On 14 Mar 91 02:02:58 GMT <jtreworgy@eagle.wesleyan.edu> said:
>Hello.. Can anyone offer any help or advice or detailed sets of instructions on
>how to install the PDC compiler OR the NorthC compiler??? I have had PDC for a
>long time and have spend God knows how many hours trying to get it to compiler
>a program (never can get it to recognize libraries and/or includes).

     You must set a global variable to point to the include directory.  I
 can't be too sure how any one does it exactly, but DICE, PDC, NorthC and
 Sozobon C all put their includes in a directory called INCLUDE and you
 must do something like SET INCLUDE VOLUME:INCLUDE/ or something similar.
 The latest version of NorthC has adequate instructions on how to set it up.

>                                                                     It always
>comes up with things like "unknown symbol _printf"or whatever I was trying to
>do. I have the Amiga developer's disks with amiga.lib and all, I just don't
>know what to do with the files.
>
     Some versions of some cc front ends don't like the ARP shell.  Try
 compiling it "by hand".  If BLink is yelling at you, you might also have
 to set up your libs directory similarly to the includes.

>As for NorthC, the damn thing is SUPPOSED to work by itself... it comes with
>very explicit instructions for creating programs, and I get the same old
>yarn about _printf (after some messing around I got it to work until the linker
>but then it complained about _main).

     I have gotten NorthC to work, but you must use A68k's -g option, as
 someone else suggested.
>
>I am sorry if this seems vague. I obviously haven't done much amiga programming
>but I've done plenty of C programming on other machines and would love to get
>either one of the beasties working, and am getting very frustrated with how
>the instructions for both these programs make it look reeeal easy yet I can't
>even make either one give me the time of day. (figuratively). Any help would be
>very much appreciated....

 [Muncha-Muncha]

     When starting programming on the Amiga with PD compilers, patience
 is your most valuable commodity.

>--
>James A. Treworgy    -- No quote here for insurance reasons --
>jtreworgy@eagle.wesleyan.edu         jtreworgy@WESLEYAN.BITNET

--------
     F. Michael Theilig  -  The University of Rhode Island at Little Rest
                            GKZ117 at URIACC.Bitnet
                            GKZ117 at URIACC.URI.edu

                                               Though you'd like to know.

dillon@overload.Berkeley.CA.US (Matthew Dillon) (03/16/91)

In article <47617@nigel.ee.udel.edu> GKZ117@uriacc.uri.edu (F. Michael Theilig) writes:
>On 14 Mar 91 02:02:58 GMT <jtreworgy@eagle.wesleyan.edu> said:
>>Hello.. Can anyone offer any help or advice or detailed sets of instructions on
>>how to install the PDC compiler OR the NorthC compiler??? I have had PDC for a
>>long time and have spend God knows how many hours trying to get it to compiler
>>a program (never can get it to recognize libraries and/or includes).
>
>     You must set a global variable to point to the include directory.  I
> can't be too sure how any one does it exactly, but DICE, PDC, NorthC and
> Sozobon C all put their includes in a directory called INCLUDE and you
> must do something like SET INCLUDE VOLUME:INCLUDE/ or something similar.
> The latest version of NorthC has adequate instructions on how to set it up.

    DICE sticks its includes in DINCLUDE: .. the amiga includes are in a
    subdirectory depending on the OS, DINCLUDE:AMIGA20/ or
    DINCLUDE:AMIGA13/ while top level includes like stdio.h are just in
    DINCLUDE:, as in DINCLUDE:stdio.h

    For DICE, at least, DLIB: points to the link libraries, DINCLUDE:
    to the includes, and there is one enviroment variables called
    DCCOPTS (setenv DCCOPTS <options>)

					    -Matt

>>James A. Treworgy    -- No quote here for insurance reasons --
>>jtreworgy@eagle.wesleyan.edu	       jtreworgy@WESLEYAN.BITNET
>
>--------
>     F. Michael Theilig  -  The University of Rhode Island at Little Rest
>			     GKZ117 at URIACC.Bitnet
>			     GKZ117 at URIACC.URI.edu


    Matthew Dillon	    dillon@Overload.Berkeley.CA.US
    891 Regal Rd.	    uunet.uu.net!overload!dillon
    Berkeley, Ca. 94708
    USA