123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- /*
- A simple make script for FPC Pascal.
- For your final release you can use this script
- to get the smallest possible program.
- If you are using the ms-dos cross compiler you
- can use this script to assemble and link your
- programs.
- This is what I started with, compiled all units
- on ms-dos and moved them over to my Amiga. There
- I assembled all to objectfiles. Now I could
- compile testprograms on ms-dos, move to Amiga
- and use this script to put it all together.
- Usage:
- rx make testprog.pas exec intuition graphics
- This will compile testprog.pas and link
- prt0.o, sysamiga.o, exec.o, intuition.o,
- graphics.o and testprog.o to testprog.
- rx make testprog.asm exec intuition graphics
- The same as above but it just assembles
- testprog.asm and links it.
- rx make testprog exec intuition graphics
- The same as above, treats testprog as an
- assembler file.
- Don't forget so set the correct paths for
- the binaries bellow.
- This is just a quick hack but it does work.
- [email protected]
- */
- SIGNAL ON BREAK_C
- SIGNAL ON SYNTAX
- parse arg main list
- /*
- First parse the args and set up a list
- */
- k = 0 œ
- do while list ~= ''
- parse var list keyword.k list
- k=k+1
- end
- /*
- Set the correct path
- */
- ASCOM = 'dh1:fpc/bin/as'
- LDCOM = 'dh1:fpc/bin/ld'
- UNITS = 'dh1:fpc/units/'
- SYSUNITS = 'dh1:fpc/lib/'
- PPCCOM = 'dh1:fpc/bin/ppc'
- STRIPCOM = 'dh1:fpc/bin/strip'
- /*
- Set the system units in the list
- */
- linkline = SYSUNITS || 'prt0.o ' || SYSUNITS || 'sysamiga.o '
- /*
- If there are more args, put in linklist
- */
- do n=0 to k-1
- linkline = linkline || UNITS || keyword.n || '.o'||' '
- end
- /*
- Check if it's a pascal or assembler file
- */
- parse var main head '.' ext
- if upper(ext) = 'PAS' | upper(ext) = 'P' | upper(ext) = 'PP' then do
- say 'Compiling ' || main
- address command PPCCOM || ' ' main || ' -Cn'
- if rc ~=0 then do
- say 'Problems with compiler'
- exit
- end
- end
- else do
- parse var main head '.' ext
- say 'Assembling ' || head
- address command ASCOM || ' ' || head || '.asm' || ' -o ' || head || '.o'
- if rc ~=0 then do
- say 'Problems with assembler'
- exit
- end
- end
- /*
- If we got here add to linklist
- */
- linkline = linkline || head || '.o' || ' -o ' || head
- /*
- Now link the files
- */
- say 'Linking ' || head
- address command LDCOM || ' ' || linkline
- if rc ~=0 then do
- say 'Problems with linker'
- exit
- end
- /*
- Use strip
- */
- say 'Using Strip on ' || head
- address command STRIPCOM || ' ' || head
- if rc ~=0 then do
- say 'Problems with strip'
- exit
- end
- say 'Done with ' || head
- exit
- BREAK_C:
- SYNTAX:
- SAY "Sorry, error line" SIGL ":" ErrorText(RC) ":-("
- EXIT
|