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

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