]> Shamusworld >> Repos - virtualjaguar/blob - jaguarcore.mak
Add verbose option to Makefile (V=1)
[virtualjaguar] / jaguarcore.mak
1 #
2 # Makefile for Virtual Jaguar core library
3 #
4 # by James Hammons
5 #
6 # This software is licensed under the GPL v3 or any later version. See the
7 # file GPLv3 for details. ;-)
8 #
9
10 ifeq ("$(V)","1")
11 Q :=
12 else
13 Q := @
14 endif
15
16 # Cross compilation with MXE
17 #CROSS = i686-pc-mingw32-
18
19 # Figure out which system we're compiling for, and set the appropriate variables
20
21 ifeq "$(CROSS)" ""
22 OSTYPE := $(shell uname -a)
23
24 # Win32
25 ifeq "$(findstring Msys,$(OSTYPE))" "Msys"
26
27 SYSTYPE    := __GCCWIN32__
28 SDLLIBTYPE := --libs
29
30 # Apple. Should catch both 'darwin' and 'darwin7.0'
31 else ifeq "$(findstring Darwin,$(OSTYPE))" "Darwin"
32
33 SYSTYPE    := __GCCUNIX__ -D__THINK_STUPID__
34 SDLLIBTYPE := --static-libs
35
36 # Linux
37 else ifeq "$(findstring Linux,$(OSTYPE))" "Linux"
38
39 SYSTYPE    := __GCCUNIX__
40 SDLLIBTYPE := --libs
41
42 else ifeq "$(findstring kFreeBSD,$(OSTYPE))" "kFreeBSD"
43
44 SYSTYPE    := __GCCUNIX__
45 SDLLIBTYPE := --libs
46
47 # ??? Throw error, unknown OS
48 else
49
50 $(error OS TYPE UNDETECTED)
51
52 endif
53 else
54 SYSTYPE    := __GCCWIN32__
55 SDLLIBTYPE := --libs
56 endif
57
58 # Set vars for libcdio
59 ifneq "$(shell pkg-config --silence-errors --libs libcdio)" ""
60 HAVECDIO := -DHAVE_LIB_CDIO
61 CDIOLIB  := -lcdio
62 else
63 HAVECDIO :=
64 CDIOLIB  :=
65 endif
66
67 CC      := $(CROSS)gcc
68 LD      := $(CROSS)gcc
69 AR      := $(CROSS)ar
70 ARFLAGS := -rs
71
72 SDL_CFLAGS = `$(CROSS)sdl-config --cflags`
73 DEFINES = -D$(SYSTYPE)
74 GCC_DEPS = -MMD
75
76 INCS := -I./src
77
78 OBJS := \
79         obj/blitter.o      \
80         obj/cdintf.o       \
81         obj/cdrom.o        \
82         obj/crc32.o        \
83         obj/dac.o          \
84         obj/dsp.o          \
85         obj/eeprom.o       \
86         obj/event.o        \
87         obj/file.o         \
88         obj/filedb.o       \
89         obj/gpu.o          \
90         obj/jagbios.o      \
91         obj/jagbios2.o     \
92         obj/jagcdbios.o    \
93         obj/jagdevcdbios.o \
94         obj/jagstub1bios.o \
95         obj/jagstub2bios.o \
96         obj/jagdasm.o      \
97         obj/jaguar.o       \
98         obj/jerry.o        \
99         obj/joystick.o     \
100         obj/log.o          \
101         obj/memory.o       \
102         obj/mmu.o          \
103         obj/op.o           \
104         obj/settings.o     \
105         obj/state.o        \
106         obj/tom.o          \
107         obj/universalhdr.o \
108         obj/unzip.o        \
109         obj/wavetable.o
110
111 # Targets for convenience sake, not "real" targets
112 .PHONY: clean
113
114 all: obj obj/libjaguarcore.a
115         @echo "Done!"
116
117 obj:
118         @mkdir obj
119
120 # Library rules (might not be cross-platform compatible)
121 obj/libjaguarcore.a: $(OBJS) 
122         $(Q)$(AR) $(ARFLAGS) obj/libjaguarcore.a $(OBJS)
123
124 # Main source compilation (implicit rules)...
125
126 obj/%.o: src/%.cpp
127         @echo -e "\033[01;33m***\033[00;32m Compiling $<...\033[00m"
128         $(Q)$(CC) $(GCC_DEPS) $(CXXFLAGS) $(SDL_CFLAGS) $(DEFINES) $(INCS) -c $< -o $@
129
130 -include obj/*.d