Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in 
CSDb User Forums


Forums > C64 Coding > Cross Development using Makefile
2013-01-25 14:45
Burglar

Registered: Dec 2004
Posts: 796
Cross Development using Makefile

Weekend didn't even start for most of you yet, but here it is ;)

Cross Development using Makefile

comments and improvements are of course very welcome.

enjoy and may your build times be short!

make -j16
 
... 10 posts hidden. Click here to view all posts....
 
2013-01-27 14:49
Groepaz

Registered: Dec 2001
Posts: 9100
"Actually you get quite far by installing nmake from microsoft and then unixtools for windows."
lets say you can make some things work. until you notice that some things only work halfway as intended. and then you will encounter something that doesnt work at all and install cygwin. =)

and ofcourse nmake works differently from gnu make. not to say it seriously sucks arse :)
2013-01-27 15:30
JackAsser

Registered: Jun 2002
Posts: 1539
:P
2013-01-27 20:16
Trap

Registered: Jul 2010
Posts: 182
Thank you Burglar for writing this.

Excellent stuff!!!
2013-01-28 11:26
spider-j

Registered: Oct 2004
Posts: 192
Thanks for the rant, Burglar! I finally wrote my first Makefile \o/

But I've got the problem that make everytime builds everything from scratch; even when none of the source or dependencies files was changed (i.e. when I type 'make' two times in the shell like you wrote in the rant).

Here's my Makefile:
ASS=acme
ASSFLAGS=-v4
LIBPATH=/usr/share/acme/6502
LIBS=$(LIBPATH)/kernal.a $(LIBPATH)/static.a $(LIBPATH)/macros.a
PACKER=exomizer
PACKERFLAGS=sfx 2064 -n
BINARYDIR=../bin
OBJECTS=loader.prg rasters.prg
RM=rm -f

all: $(OBJECTS)

%.prg: %.asm $(LIBS)
	$(ASS) $(ASSFLAGS) $<
	$(PACKER) $(PACKERFLAGS) -o $(BINARYDIR)/$@ $@
	$(RM) $@

loader.prg: loader.asm include/gemischt.prg include/randomtab2.prg

rasters.prg: rasters.asm include/ballsprites.spr include/border-empty-sprites.spr include/demotune01.c64.prg include/mydpetsciilogo.prg include/spider-logo-sprites.spr

clean:
	$(RM) $(BINARYDIR)/*
2013-01-28 12:33
blackwine

Registered: Jan 2013
Posts: 2
Spider, remove:
	$(RM) $@

And try again. The problem is that you define your $(OBJECTS), but you remove them and pack them elsewhere. If you have some intermediate objects you can define them using e.g:
.INTERMEDIATE:  loader-not-packed.prg rasters-not-packed.prg
2013-01-28 15:13
spider-j

Registered: Oct 2004
Posts: 192
Thanks for the hint. Still I don't understand completely how to get it working like I want.

Gotta try out a few things... :-)
2013-01-28 15:18
Mr. SID

Registered: Jan 2003
Posts: 366
Useful hint: running "make -d" outputs lots of debug information to help with problems like that...
2013-01-28 18:07
Burglar

Registered: Dec 2004
Posts: 796
@Dr.J, ah yes Windows... groepaz and JackAsser already told you, but, use cygwin! ;)
That's the best option, or just install linux or get a mac.
GNU make runs on Linux/BSD/OSX/*nix and probably more.

nmake might do the tricks you need, but I cant really say as I don't use
windows anymore. Also, stackoverflow has some info on it that might help you too.

@spider, as BlackWine said, you rm/delete the object right after you build it ;)
You'll want to do one step at a time, not combine them.

I would do it like this, with a seperate compile rule and a seperate pack rule.
OBJECTS=loader.exo rasters.exo

# a .prg is a compiled .asm
%.prg: %.asm $(LIBS)
	$(ASS) $(ASSFLAGS) $<

# a .exo is a packed .prg
%.exo: %.prg
    $(PACKER) $(PACKERFLAGS) $< -o $@

all: $(OBJECTS)

loader.prg: loader.asm include/gemischt.prg include/randomtab2.prg

rasters.prg: rasters.asm include/ballsprites.spr include/border-empty-sprites.spr include/demotune01.c64.prg include/mydpetsciilogo.prg include/spider-logo-sprites.spr

clean:
    rm -f *.exo
2013-01-28 22:28
King Durin
Account closed

Registered: Oct 2007
Posts: 85
GNU Make for Win32 works just fine, especially if you also install the GNU For Win32 library on your system and put the gnu\bin folder on the path. Cygwin, etc, not necessary.
2013-01-29 14:19
Groepaz

Registered: Dec 2001
Posts: 9100
one day also you will come to the point where things do not actually quite work as intended - and cygwin is it then =) i'd just recommend to use it from the start, because it will save you a lot of frustrating WTF moments.
Previous - 1 | 2 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Shinobi/Planet Jazz
Shogoon/Elysium/MSL
Dr.Strange/Atlantis
/Panor..
iAN CooG/HVSC
MCM
blendo75
Guests online: 59
Top Demos
1 Uncensored  (9.7)
2 Unboxed  (9.7)
3 Edge of Disgrace  (9.7)
4 Coma Light 13  (9.7)
5 Comaland 100%  (9.6)
6 Lunatico  (9.6)
7 The Shores of Reflec..  (9.6)
8 Rivalry  (9.5)
9 C=Bit 18  (9.5)
10 X Marks the Spot  (9.5)
Top onefile Demos
1 Sprite Font Compo Re..  (9.8)
2 The Tuneful Eight [u..  (9.8)
3 Instinct  (9.6)
4 Dawnfall V1.1  (9.5)
5 Smile to the Sky  (9.5)
6 Space Demo  (9.5)
7 Crystal Gazer  (9.5)
8 Daah, Those Acid Pil..  (9.5)
9 Innervasion  (9.5)
10 Rewind  (9.5)
Top Groups
1 PriorArt  (9.7)
2 Fossil  (9.6)
3 Performers  (9.6)
4 Oxyron  (9.5)
5 Booze Design  (9.4)
Top Diskmag Editors
1 hedning  (9.8)
2 Jazzcat  (9.5)
3 Newscopy  (9.4)
4 Peter  (9.3)
5 Remix  (9.2)

Home - Disclaimer
Copyright © No Name 2001-2019
Page generated in: 0.048 sec.