Develop and Download Open Source Software

Browse CVS Repository

Contents of /mame32jp/mame32jp/makefile

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.13 - (show annotations) (download)
Fri May 24 09:53:11 2002 UTC (21 years, 10 months ago) by zero
Branch: MAIN
CVS Tags: ver0_60_5, HEAD
Changes since 1.12: +29 -10 lines
*** empty log message ***

1 #####################################################################
2
3 MAME_VERSION = -DMAME_VERSION=60
4
5 # set this to mame, mess or the destination you want to build
6 # TARGET = mame
7 # TARGET = mess
8 # TARGET = neomame
9 # TARGET = cpmame
10 # TARGET = mmsnd
11 # example for a tiny compile
12 # TARGET = tiny
13 ifeq ($(TARGET),)
14 TARGET = mame
15 endif
16
17 # select compiler
18 # USE_GCC = 1
19 # USE_VC = 1
20
21 # uncomment next line to include the debugger
22 # DEBUG = 1
23
24 # uncomment next line to include the symbols for symify
25 # SYMBOLS = 1
26
27 # uncomment next line to generate a link map for exception handling in windows
28 # MAP = 1
29
30 # uncomment next line to use Assembler 68000 engine
31 X86_ASM_68000 = 1
32
33 # uncomment next line to use Assembler 68020 engine
34 # X86_ASM_68020 = 1
35
36 # uncomment next line to use cygwin compiler
37 # COMPILESYSTEM_CYGWIN = 1
38
39 # uncomment next line to support 32bpp
40 SUPPORT_32BPP = -DSUPPORT_32BPP
41
42 # uncomment next line to support extra folder
43 EXTRA_FOLDER = -DEXTRA_FOLDER
44
45 # build MAME32JP
46 MAME32JP = -DMAME32JP
47
48 # uncomment next line to support disable blurring filter
49 # NFILTER = -DNFILTER
50
51 # uncomment next line to support game selection by a joystick
52 JOYGUI = -DJOYGUI
53
54 # uncomment next line to support stretch to fullscreen
55 # FSSTRETCH = -DFSSTRETCH
56
57 # language
58 # JAPANESE = 1
59 # ENGLISH = 1
60
61 # build console version
62 ifdef CONSOLE_MODE
63 BUILD_CONSOLE = -DBUILD_CONSOLE
64 endif
65
66 # use fast (register) calling convention (for VC).
67 # USE_FASTCALL = -DFASTCALL
68
69 # uncomment next line to generate help files
70 # HELP = 1
71
72 #####################################################################
73 # PLEASE DO NOT CHANGE THE FOLLOWING SETTINGS!
74
75 # if compiler is not selected, GCC is used as the default.
76 ifdef IP4
77 INTEL = 1
78 USE_VC = 1
79 USE_GCC =
80 endif
81
82 ifndef JAPANESE
83 ifndef ENGLISH
84 JAPANESE=1
85 endif
86 endif
87
88 ifndef USE_VC
89 ifndef USE_GCC
90 USE_GCC = 1
91 endif
92 endif
93
94 # set this the operating system you're building for
95 OS = Win32
96
97 # extension for executables
98 EXE = .exe
99
100 # CPU core include paths
101 VPATH = src $(wildcard src/cpu/*)
102
103 ifdef USE_GCC
104 USE_FASTCALL =
105 USE_VC =
106 endif
107
108 # compiler, linker and assembler
109
110 ifdef USE_GCC
111 AR = @ar
112 CC = @gcc
113 LD = @gcc
114 ifdef JAPANESE
115 RC = @brcc32
116 RC2 = @windres
117 else
118 RC = @windres
119 endif
120 else
121 AR = @lib
122 ifdef INTEL
123 CC = @icl
124 else
125 CC = @cl
126 endif
127 LD = @link
128 RC = @rc
129 endif
130
131 # assembler
132 ASM = @nasmw
133 ASMFLAGS = -f win32 $(SUPPORT_32BPP)
134
135
136 # utilities
137 RM = @rm -f
138 RMDIR = rd /S /Q
139 MD = -mkdir.exe -p
140
141
142 ifdef USE_GCC
143 WINDOWS_PROGRAM = -mwindows
144 CONSOLE_PROGRAM = -mconsole
145 else
146 WINDOWS_PROGRAM = -subsystem:windows
147 CONSOLE_PROGRAM = -subsystem:console
148 endif
149
150 ifdef BUILD_CONSOLE
151 PROGRAM_TYPE = $(CONSOLE_PROGRAM)
152 else
153 PROGRAM_TYPE = $(WINDOWS_PROGRAM)
154 endif
155
156 ifdef I686
157 P6OPT = ppro
158 else
159 P6OPT = notppro
160 endif
161
162 ifdef JAPANESE
163 LANGUAGE = -DJAPANESE
164 ENGLISH =
165 else
166 LANGUAGE = -DENGLISH
167 JAPANESE =
168 endif
169 SUFFIX = jp
170
171 ifdef SYMBOLS
172 CPUTYPE = debug
173 COMPILETYPE = -DCOMPILETYPE=0
174 else
175 ifdef USE_GCC
176 ifdef K6
177 ARCH = -march=k6
178 CPUTYPE = k6
179 COMPILETYPE = -DCOMPILETYPE=4
180 else
181 ifdef I686
182 ARCH = -march=pentiumpro
183 CPUTYPE = ppro
184 COMPILETYPE = -DCOMPILETYPE=2
185 else
186 ARCH = -march=pentium
187 CPUTYPE = pentium
188 COMPILETYPE = -DCOMPILETYPE=1
189 endif
190 endif
191 else
192 ifdef I686
193 ARCH = -G6
194 ifdef INTEL
195 ARCH += -QxiM -QaxK
196 endif
197 CPUTYPE = vc_ppro
198 COMPILETYPE = -DCOMPILETYPE=12
199 else
200 ifdef IP4
201 ARCH = -G7 -QxW
202 CPUTYPE = pentium4
203 COMPILETYPE = -DCOMPILETYPE=3
204 else
205 ARCH = -G5
206 ifdef INTEL
207 ARCH += -QaxM
208 endif
209 CPUTYPE = vc_pentium
210 COMPILETYPE = -DCOMPILETYPE=1
211 endif
212 endif
213 endif
214 endif
215
216 NAME = $(TARGET)32$(SUFFIX)
217
218 # build the targets in different object dirs, since mess changes
219 # some structures and thus they can't be linked against each other.
220 # cleantiny isn't needed anymore, because the tiny build has its
221 # own object directory too.
222 DIR_PREFIX1 = windows
223 DIR_PREFIX2 = japanese
224 ifdef CONSOLE_MODE
225 DIR_PREFIX1=console
226 endif
227 ifdef ENGLISH
228 DIR_PREFIX2 = english
229 endif
230
231 DIR_SUFFIX = $(DIR_PREFIX1)/$(DIR_PREFIX2)/$(CPUTYPE)
232 OBJ = obj/$(DIR_SUFFIX)
233 EXEDIR = exe/$(DIR_SUFFIX)
234 EMULATOR = $(EXEDIR)/$(NAME)$(EXE)
235
236 #####################################################################
237 # check enviroment
238
239 ifndef DX_INCPATH
240 nodxincpath:
241 @echo Path for DirectX include headers (DX_INCPATH) not defined.
242 endif
243
244 ifndef DX_LIBPATH
245 nodxlibpath:
246 @echo Path for DirectX Libraries (DX_LIBPATH) not defined.
247 endif
248
249 #####################################################################
250 # compiler
251
252 #--------------------------------------------------------------------
253 # Preprocessor Definitions
254 #--------------------------------------------------------------------
255
256 DEFS = \
257 -D_WIN32_IE=0x0400 \
258 -DWINVER=0x0400 \
259 -D_WIN32_WINNT=0x0400 \
260 -DDIRECTSOUND_VERSION=0x0300 \
261 -DDIRECTDRAW_VERSION=0x0300 \
262 -DDIRECTINPUT_VERSION=0x0500 \
263 -DWIN32 \
264 -D_WINDOWS \
265 -DM_PI=3.1415926534 \
266 -DPI=3.1415926534 \
267 -DCLIB_DECL=__cdecl \
268 -DDECL_SPEC=__cdecl \
269 -DPNG_SAVE_SUPPORT \
270 -DHAS_CPUS \
271 -DHAS_SOUND \
272 -DLSB_FIRST=1 \
273 $(MAME_VERSION) \
274 $(USE_FASTCALL) \
275 -DMAME_FIX \
276 -DMAME32_FIX \
277 $(MAME32JP) \
278 $(NFILTER) \
279 $(JOYGUI) \
280 $(FSSTRETCH) \
281 $(LANGUAGE) \
282 $(BUILD_CONSOLE) \
283 $(SUPPORT_32BPP) \
284 $(EXTRA_FOLDER)
285
286 ifdef USE_GCC
287 DEFS += \
288 -DNONAMELESSUNION \
289 -DHMONITOR_DECLARED \
290 -D_LPCWAVEFORMATEX_DEFINED \
291 -UWINNT \
292 -D__int64='long long' \
293 -DINLINE='static __inline__' \
294 -Dasm=__asm__ \
295 -DX86_ASM
296 else
297 DEFS += \
298 -DINLINE='static __inline' \
299 -Dinline=__inline \
300 -D__inline__=__inline
301 endif
302
303
304 ifndef SYMBOLS
305 DEFS += -DNDEBUG
306 endif
307
308 #--------------------------------------------------------------------
309 # Include path
310 #--------------------------------------------------------------------
311
312 INCLUDES = \
313 -I. \
314 -Isrc \
315 -Isrc/includes \
316 -Isrc/Win32 \
317 -Isrc/Win32/Mame32UI \
318 -Isrc/cpu/m68000 \
319 -Isrc/zlib \
320 -I$(OBJ)/cpu/m68000 \
321 -I$(DX_INCPATH) \
322
323 #--------------------------------------------------------------------
324 # C Compiler flags
325 #--------------------------------------------------------------------
326
327 ifdef USE_GCC
328
329 CFLAGS = $(INCLUDES) -mno-cygwin
330
331 # multi threaded
332 CFLAGS +=
333
334 ifdef SYMBOLS
335 CFLAGS += -d
336 endif
337
338 ifdef SYMBOLS
339 CFLAGS += -O0 -Wall -Werror -Wno-unused -g
340 else
341 CFLAGS += $(ARCH) -O3 -s -static -malign-double \
342 -fomit-frame-pointer -fstrict-aliasing -ffast-math \
343 -Werror -Wall -Wno-sign-compare -Wunused \
344 -Wpointer-arith -Wbad-function-cast -Wcast-align \
345 -Waggregate-return -Wshadow -Wstrict-prototypes -Wundef
346 # try with gcc 3.0 -Wpadded -Wunreachable-code -Wdisabled-optimization
347 # -W had to remove because of the "missing initializer" warning
348 # -Wlarger-than-262144 \
349 # -Wcast-qual \
350 # -Wwrite-strings \
351 # -Wconversion \
352 # -Wmissing-prototypes \
353 # -Wmissing-declarations \
354 # -Wredundant-decls
355
356 endif
357
358 CFLAGSPEDANTIC = $(CFLAGS) -pedantic
359
360 else
361
362 CFLAGS = -W3 -nologo $(INCLUDES)
363
364 # multi threaded
365 CFLAGS += -MT
366
367 ifdef USE_FASTCALL
368 CFLAGS += -Gr
369 endif
370
371 ifdef SYMBOLS
372 CFLAGS += -Zi -Od
373 else
374
375 CFLAGS += -Ox $(ARCH) -Ob2
376 endif
377
378 endif
379
380 #####################################################################
381 # Resources
382
383 RCDEFS = $(COMPILETYPE) $(BUILD_CONSOLE) -DNDEBUG $(MAME_VERSION) -D_WIN32
384
385 RCDEFS += $(NFILTER) $(JOYGUI) $(FSSTRETCH)
386
387 ifdef USE_GCC
388 ifdef JAPANESE
389 RCFLAGS = -r -I./Win32 -I$(INCLUDE)
390 else
391 RCDEFS += -D_WIN32_IE=0x0400
392 RCFLAGS = -O coff --include-dir src/Win32
393 endif
394 else
395 ifdef JAPANESE
396 RCFLAGS = -l 0x411 -I./Win32
397 else
398 RCFLAGS = -l 0x409 -I./Win32
399 endif
400 endif
401
402 #####################################################################
403 # Linker
404
405 ifdef USE_GCC
406 LIBS = \
407 -lkernel32 \
408 -luser32 \
409 -lgdi32 \
410 -lshell32 \
411 -lcomctl32 \
412 -lcomdlg32 \
413 -ladvapi32 \
414 -lwinmm \
415 -ldxguid \
416 -ldinput \
417 -lhtmlhelp
418
419 LDFLAGS = -L$(DX_LIBPATH)
420
421 ifndef SYMBOLS
422 #LDFLAGS = -s -Wl,--warn-common
423 LDFLAGS += -s
424 endif
425
426 ifdef MAP
427 MAPFLAGS = -Wl,-M >$(NAME).map
428 else
429 MAPFLAGS =
430 endif
431
432 else
433
434 LIBS = \
435 kernel32.lib \
436 user32.lib \
437 gdi32.lib \
438 shell32.lib \
439 comctl32.lib \
440 comdlg32.lib \
441 advapi32.lib \
442 winmm.lib \
443 dxguid.lib \
444 dinput.lib \
445 htmlhelp.lib
446
447 LDFLAGS = -libpath:$(DX_LIBPATH)
448
449 LDFLAGS += -machine:x86 -nologo
450
451 ifdef SYMBOLS
452 LDFLAGS += -debug:full
453 else
454 LDFLAGS += -release -incremental:no
455 endif
456
457 ifdef MAP
458 LDFLAGS += -map
459 endif
460
461 endif
462
463 #####################################################################
464
465 OBJDIRS = \
466 $(OBJ) \
467 $(OBJ)/cpu \
468 $(OBJ)/sound \
469 $(OBJ)/drivers \
470 $(OBJ)/machine \
471 $(OBJ)/vidhrdw \
472 $(OBJ)/sndhrdw \
473 $(OBJ)/patch \
474 $(OBJ)/zlib \
475 $(OBJ)/Win32 \
476 $(OBJ)/Win32/Mame32UI \
477 $(OBJ)/Win32/hlp
478
479 ifeq ($(TARGET),mmsnd)
480 OBJDIRS += $(OBJ)/mmsnd $(OBJ)/mmsnd/machine $(OBJ)/mmsnd/drivers $(OBJ)/mmsnd/sndhrdw
481 endif
482
483 #####################################################################
484
485 all: maketree $(EMULATOR) extra
486 #all: update maketree $(EMULATOR) extra
487
488 # include the various .mak files
489 include src/core.mak
490 include src/$(TARGET).mak
491 include src/rules.mak
492 include src/zlib/zlib.mak
493 include src/$(OS)/$(OS).mak
494
495 ifdef USE_GCC
496 OSOBJS += $(OBJ)/Win32/portio.o
497 endif
498
499 ifdef DEBUG
500 DBGDEFS = -DMAME_DEBUG
501 else
502 DBGDEFS =
503 DBGOBJS =
504 endif
505
506 ifdef COMPILESYSTEM_CYGWIN
507 CFLAGS += -mno-cygwin
508 LDFLAGS += -mno-cygwin
509 endif
510
511 extra: $(TOOLS) $(HELPFILES)
512
513 # combine the various definitions to one
514 CDEFS = $(DEFS) $(COREDEFS) $(CPUDEFS) $(SOUNDDEFS) $(ASMDEFS) $(DBGDEFS)
515
516 # primary target
517 $(EMULATOR): $(OBJS) $(COREOBJS) $(OSOBJS) $(DRVLIBS) $(RES)
518 # always recompile the version string
519 ifdef USE_GCC
520 $(CC) $(CDEFS) $(CFLAGS) -o $(OBJ)/version.o -c src/version.c
521 else
522 $(CC) $(CDEFS) $(CFLAGS) -Fo$(OBJ)/version.o -c src/version.c
523 endif
524 @echo Linking $@...
525 $(MD) $(EXEDIR)
526 ifdef USE_GCC
527 $(LD) $(LDFLAGS) $(PROGRAM_TYPE) $(OBJS) $(COREOBJS) $(OSOBJS) $(LIBS) $(DRVLIBS) $(RES) -o $@
528 else
529 $(LD) $(LDFLAGS) $(PROGRAM_TYPE) -out:$(EMULATOR) $(LIBS) $(COREOBJS) $(OBJS) $(OSOBJS) $(DRVLIBS) $(RES)
530 endif
531 ifndef SYMBOLS
532 # upx $(EMULATOR)
533 endif
534
535 romcmp$(EXE): $(OBJ)/romcmp.o $(OBJ)/unzip.o $(OBJ)/zlib.a
536 @echo Linking $@...
537 ifdef USE_GCC
538 $(LD) $(LDFLAGS) $(CONSOLE_PROGRAM) $^ $(OBJ)/zlib.a $(LIBS) -o $@
539 else
540 $(LD) $(LDFLAGS) $(CONSOLE_PROGRAM) $(OBJ)/zlib.a $(LIBS)$(OBJ)/Win32/dirent.o -out:$@ $^
541 endif
542
543 hdcomp$(EXE): $(OBJ)/romcmp.o $(OBJ)/unzip.o $(OBJ)/zlib.a
544 @echo Linking $@...
545 ifdef USE_GCC
546 $(LD) $(LDFLAGS) $(CONSOLE_PROGRAM) $^ $(OBJ)/zlib.a $(LIBS) -o $@
547 else
548 $(LD) $(LDFLAGS) $(CONSOLE_PROGRAM) $(OBJ)/zlib.a $(LIBS) $(OBJ)/Win32/dirent.o -out:$@ $^
549 endif
550
551 #--------------------------------------------------------------------
552 # make list
553
554 ifdef PERL
555 $(OBJ)/cpuintrf.o: src/cpuintrf.c rules.mak
556 $(PERL) src/makelist.pl
557 @echo Compiling $<...
558 $(CC) $(CDEFS) $(CFLAGSPEDANTIC) -c $< -o $@
559 endif
560
561 #--------------------------------------------------------------------
562 # ASM source
563
564 $(OBJ)/%.o: src/%.asm
565 @echo Assembling $<...
566 $(ASM) -o $@ $(ASMFLAGS) $(ASMDEFS) $<
567
568 #--------------------------------------------------------------------
569 # C source
570
571 $(OBJ)/%.o: src/%.c
572 @echo Compiling $<...
573 ifdef USE_GCC
574 ifdef JAPANESE
575 @sjisfix $< check
576 endif
577 $(CC) $(CDEFS) $(CFLAGSPEDANTIC) -c $< -o $@
578 ifdef JAPANESE
579 @sjisfix $< delete
580 endif
581 else
582 ifdef IP4
583 ifdef JAPANESE
584 @sjisfix $< check
585 endif
586 endif
587 $(CC) $(CDEFS) $(CFLAGS) -Fo$@ -c $<
588 ifdef IP4
589 ifdef JAPANESE
590 @sjisfix $< delete
591 endif
592 endif
593 endif
594
595 #--------------------------------------------------------------------
596 # resource
597
598 ifdef USE_GCC
599 $(OBJ)/Win32/%.o: src/Win32/%.rc
600 @echo Compiling resources $<...
601 ifdef JAPANESE
602 $(RC) $(RCDEFS) $(RCFLAGS) -Fosrc/Win32/mame32$(SUFFIX).res $<
603 $(RC2) -i src/Win32/mame32$(SUFFIX).res -o $@
604 else
605 $(RC) $(RCDEFS) $(RCFLAGS) -o $@ -i $<
606 endif
607 else
608 $(OBJ)/Win32/%.o: src/Win32/%.rc
609 @echo Compiling resources $<...
610 $(RC) $(RCDEFS) $(RCFLAGS) -Fo$@ $<
611 endif
612
613 #--------------------------------------------------------------------
614 # 68000 C core
615
616 # compile generated C files for the 68000 emulator
617 $(M68000_GENERATED_OBJS): $(OBJ)/cpu/m68000/m68kmake$(EXE)
618 @echo Compiling $(subst .o,.c,$@)...
619 ifdef USE_GCC
620 $(CC) $(CDEFS) $(CFLAGSPEDANTIC) -c $*.c -o $@
621 else
622 $(CC) $(CDEFS) $(CFLAGS) -Fo$@ -c $*.c
623 endif
624
625 # additional rule, because m68kcpu.c includes the generated m68kops.h :-/
626 $(OBJ)/cpu/m68000/m68kcpu.o: $(OBJ)/cpu/m68000/m68kmake$(EXE)
627
628 # generate C source files for the 68000 emulator
629 $(OBJ)/cpu/m68000/m68kmake$(EXE): src/cpu/m68000/m68kmake.c
630 @echo M68K make $<...
631 ifdef USE_GCC
632 $(CC) $(CDEFS) $(CFLAGSPEDANTIC) -DDOS -o $(OBJ)/cpu/m68000/m68kmake$(EXE) $<
633 else
634 $(CC) $(CDEFS) $(CFLAGS) -Fe$@ -Fo$(OBJ)/cpu/m68000 $<
635 endif
636 @echo Generating M68K source files...
637 $(OBJ)/cpu/m68000/m68kmake$(EXE) $(OBJ)/cpu/m68000 src/cpu/m68000/m68k_in.c
638
639 #--------------------------------------------------------------------
640 # 68000 ASM core
641
642 # generate asm source files for the 68000 emulator
643 $(OBJ)/cpu/m68000/68000.asm: src/cpu/m68000/make68k.c
644 @echo Compiling $<...
645 ifdef USE_GCC
646 $(CC) $(CDEFS) $(CFLAGSPEDANTIC) -O0 -DDOS -o $(OBJ)/cpu/m68000/make68k$(EXE) $<
647 else
648 $(CC) $(CDEFS) $(CFLAGS) -Fe$(OBJ)/cpu/m68000/make68k$(EXE) -Fo$(OBJ)/cpu/m68000 $<
649 endif
650 @echo Generating $@...
651 $(OBJ)/cpu/m68000/make68k$(EXE) $@ $(OBJ)/cpu/m68000/68000tab.asm 00 $(P6OPT)
652
653 # generated asm files for the 68000 emulator
654 $(OBJ)/cpu/m68000/68000.o: $(OBJ)/cpu/m68000/68000.asm
655 @echo Assembling $<...
656 $(ASM) -o $@ $(ASMFLAGS) $(subst -D,-d,$(ASMDEFS)) $<
657
658
659 #--------------------------------------------------------------------
660 # 68020 ASM core
661
662 # generate asm source files for the 68020 emulator
663 $(OBJ)/cpu/m68000/68020.asm: src/cpu/m68000/make68k.c
664 @echo Compiling $<...
665 ifdef USE_GCC
666 $(CC) $(CDEFS) $(CFLAGSPEDANTIC) -O0 -DDOS -o $(OBJ)/cpu/m68000/make68k(EXE) $<
667 else
668 $(CC) $(CDEFS) $(CFLAGS) -Fe$(OBJ)/cpu/m68000/make68k(EXE) -Fo$(OBJ)/cpu/m68000 $<
669 endif
670 @echo Generating $@...
671 $(OBJ)/cpu/m68000/make68k(EXE) $@ $(OBJ)/cpu/m68000/68020tab.asm 20 $(P6OPT)
672
673 # generated asm files for the 68020 emulator
674 $(OBJ)/cpu/m68000/68020.o: $(OBJ)/cpu/m68000/68020.asm
675 @echo Assembling $<...
676 $(ASM) -o $@ $(ASMFLAGS) $(subst -D,-d,$(ASMDEFS)) $<
677
678 #--------------------------------------------------------------------
679 # archiving object files
680
681 $(OBJ)/%.a:
682 @echo Archiving $@...
683 $(RM) $@
684 ifdef USE_GCC
685 $(AR) cr $@ $^
686 else
687 $(AR) -nologo -out:$@ $^
688 endif
689
690
691 #####################################################################
692 # make rules
693
694 makedir:
695 @echo make makedir is no longer necessary, just type make
696
697 $(sort $(OBJDIRS)):
698 $(MD) $@
699
700 maketree2:
701 @echo Making object tree...
702
703 maketree: maketree2 $(sort $(OBJDIRS))
704
705 clean:
706 @echo Deleting object tree $(OBJ)...
707 $(RM) -r $(OBJ)
708 @echo Deleting $(EMULATOR)...
709 $(RM) $(EMULATOR)
710
711 clean68k:
712 @echo Deleting 68k files...
713 $(RM) -r $(OBJ)/cpuintrf.o
714 $(RM) -r $(OBJ)/drivers/cps2.o
715 $(RM) -r $(OBJ)/cpu/m68000

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26