|
現: 2024-01-08 (月) 12:58:44 ゲスト |
| + | * アプリケーション開発用Makefile例 |
| + | -introa12にバンドルする予定のもの |
| + | -introa11版はバグがあったり、分割コンパイルにあまり向かなかったりしていた。 |
| | | |
| + | * win32用 (Linux用?) |
| + | -CとASKAの混在にも対応。ライブラリ作成にも対応。DLL作成にも対応。 |
| + | |
| + | TARGET = helloc4 |
| + | STACKSIZE = 4k |
| + | MALLOCSIZE = 1k |
| + | MMAREA = 0 |
| + | OBJS = $(TARGET).obj |
| + | |
| + | # 以上5つはソースごとに書き換える |
| + | # OBJSを書き換えると分割コンパイル対応 |
| + | |
| + | TOOLPATH = |
| + | INCPATH = $(TOOLPATH). |
| + | RULEFILE = $(TOOLPATH)guigui00.rul |
| + | DLLRULE = $(TOOLPATH)dllrule0.rul |
| + | MAKE = $(TOOLPATH)make -r |
| + | SJISCONV = $(TOOLPATH)sjisconv -s |
| + | CC1 = $(TOOLPATH)cc1 -I$(INCPATH) -Os -quiet |
| + | GAS2NASK = $(TOOLPATH)gas2nask -a |
| + | NASK = $(TOOLPATH)nask |
| + | OBJ2BIM = $(TOOLPATH)obj2bim3 |
| + | BIM2BIN = $(TOOLPATH)bim2bin3 |
| + | CPP0 = $(TOOLPATH)cpp0 -P -I$(INCPATH) |
| + | ASKA = $(TOOLPATH)aska |
| + | NASKCNV = $(TOOLPATH)naskcnv0 -l -s -w |
| + | GOLIB = $(TOOLPATH)golib00w |
| + | DELE = del |
| + | |
| + | # 以上の項目はあなたのディレクトリ構成にあわせて書き換える |
| + | |
| + | ALL : |
| + | $(MAKE) $(TARGET).bin |
| + | |
| + | %.ca : %.c Makefile |
| + | $(SJISCONV) $*.c $*.ca |
| + | |
| + | %.gas : %.ca Makefile |
| + | $(CC1) -o $*.gas $*.ca |
| + | |
| + | %.nas : %.gas Makefile |
| + | $(GAS2NASK) $*.gas $*.nas |
| + | |
| + | %.obj : %.nas Makefile |
| + | $(NASK) $*.nas $*.obj |
| + | |
| + | %.ias : %.ask Makefile |
| + | $(CPP0) -o $*.ias $*.ask |
| + | |
| + | %.3as : %.ias Makefile |
| + | $(ASKA) $*.ias $*.3as |
| + | |
| + | %.nas : %.3as Makefile |
| + | $(NASKCNV) $*.3as $*.nas |
| + | |
| + | %.lst : %.nas Makefile |
| + | $(NASK) $*.nas $*.obj $*.lst |
| + | |
| + | $(TARGET).bim : $(OBJS) Makefile |
| + | $(OBJ2BIM) @$(RULEFILE) out:$(TARGET).bim stack:$(STACKSIZE) map:$(TARGET).map $(OBJS) |
| + | |
| + | %.bin : %.bim Makefile |
| + | $(BIM2BIN) in:$*.bim out:$*.org malloc:$(MALLOCSIZE) mmarea:$(MMAREA) |
| + | $(BIM2BIN) -osacmp -tek0 in:$*.org out:$*.bin |
| + | |
| + | $(TARGET).lib : $(OBJS) Makefile |
| + | $(GOLIB) out:$(TARGET).lib $(OBJS) |
| + | |
| + | $(TARGET).dll : $(OBJS) Makefile |
| + | $(OBJ2BIM) @$(DLLRULE) out:$(TARGET).bim map:$(TARGET).map $(OBJS) |
| + | $(BIM2BIN) -osacmp -tek0 in:$(TARGET).bim out:$(TARGET).dll |
| + | |
| + | clean : |
| + | $(DELE) *.obj |
| + | $(DELE) $(TARGET).bim |
| + | $(DELE) $(TARGET).map |
| + | $(DELE) $(TARGET).org |
| + | -(註)次の修正を加えるとLinux版になるかもしれない |
| + | |
| + | SJISCONV = cp |
| + | |
| + | CC1 = $(TOOLPATH)gocc1 -I$(INCPATH) -Os -quiet |
| + | |
| + | CPP0 = $(TOOLPATH)gocpp0 -P -I$(INCPATH) |
| + | |
| + | GOLIB = $(TOOLPATH)golib00 |
| + | |
| + | DELE = rm -f |
| + | |
| + | * Linux用 |
| + | -(誰か書いてちょ) |
| + | -(ひょっとしてdelをrmにするだけでいいのかな?) |
| + | - introa11.lzhからintroe01.lzhをまとめてコンパイルするように修正した |
| + | お手軽セットはこちら。 |
| + | [[introset-a2e>http://www.gigo-ice.org/archives/introset-a2e.tar.bz2]] |
| + | |
| + | -ざっとしか見てませんが、こんな感じにすれば多少応用が楽になるかも? |
| + | |
| + | * Linux用? |
| + | TARGET = helloc4 |
| + | STACKSIZE = 4k |
| + | MALLOCSIZE = 1k |
| + | MMAREA = 0 |
| + | OBJS = $(TARGET).obj |
| + | |
| + | # 以上5つはソースごとに書き換える |
| + | # OBJSを書き換えると分割コンパイル対応 |
| + | |
| + | |
| + | |
| + | INCPATH = . |
| + | RULEFILE = guigui00.rul |
| + | SJISCONV = ln |
| + | CC1 = gocc1 |
| + | GAS2NASK = gas2nask |
| + | NASK = nask |
| + | OBJ2BIM = obj2bim3 |
| + | BIM2BIN = bim2bin3 |
| + | |
| + | MAKE = make |
| + | DEL = rm -f |
| + | # 以上の項目はあなたのディレクトリ構成にあわせて書き換える |
| + | |
| + | ALL : |
| + | $(MAKE) $(TARGET).bin |
| + | |
| + | %.ca : %.c Makefile |
| + | $(SJISCONV) -s $*.c $*.ca |
| + | |
| + | %.gas : %.ca Makefile |
| + | $(CC1) -I$(INCPATH) -Os -quiet -o $*.gas $*.ca |
| + | |
| + | %.nas : %.gas Makefile |
| + | $(GAS2NASK) -a $*.gas $*.nas |
| + | |
| + | %.obj : %.nas Makefile |
| + | $(NASK) $*.nas $*.obj |
| + | |
| + | $(TARGET).bim : $(OBJS) Makefile |
| + | $(OBJ2BIM) @$(RULEFILE) out:$(TARGET).bim stack:$(STACKSIZE) map:$(TARGET).map $(OBJS) |
| + | |
| + | %.bin : %.bim Makefile |
| + | $(BIM2BIN) in:$*.bim out:$*.org malloc:$(MALLOCSIZE) mmarea:$(MMAREA) |
| + | $(BIM2BIN) in:$*.org out:$*.bin -osacmp -tek0 |
| + | |
| + | clean : |
| + | $(DEL) $(TARGET).map |
| + | $(DEL) $(TARGET).org |
| + | $(DEL) $(TARGET).bin |
| + | |
| + | う��ん・・・いまいち。なんか無理に書くほどのことじゃなかったような・・・・(^^;) |
| + | |
| + | * Makefileちょっぴり解説コーナー |
| + | %.gas : %.ca Makefile |
| + | $(CC1) -o $*.gas $*.ca |
| + | -これは、拡張子.gasのファイルを作るには、同じ名前で拡張子が.caのものとMakefileが必要だよっていう意味で、2行目以降が作り方になっています。$*の部分が、%の部分を引き継ぎます。 |
| + | -makeは、最初のALL:を実行してmake helloc4.binを認識し、ああ、helloc4.binを何とかして作らなきゃいけないのね、と自分の任務を理解します。 |
| + | -Makefileには、拡張子.binを作るためには同じ名前で拡張子が.bimのものが必要、と書いてあります。そしてhello4.bimのためにはhelloc4.objが必要、とも書いてあります。・・・こんな感じで自動的にたどっていくわけです。 |
| + | -それで存在するファイルを見つけることができたら、そこから順番にコマンドを実行して、目的のファイルを作ってくれます。 |
| + | |
| + | * こめんと欄 |
| + | -余談ですが、MakeファイルをWin・UNIX共通にするのは、ある規模よりも大きくなったら、スッパリあきらめるべきでしょうね。私も随分OSASKのMakeファイルをこねくりまわしましたが、結局は必要以上に複雑化してしまい読むのも大変になってしまうだけ。特にUNIX系はテキスト処理に優れているんですから、むしろ単純で読みやすいもののほうが結局手直しが楽って感じですねぇ・・・ -- [[hideyosi]] SIZE(10){2003-09-23 (火) 09:18:05} |
| + | |
| + | #comment |