]> Shamusworld >> Repos - apple2/blob - apple2/Makefile
a41a08affea7ce448f5308d39019e1b1e71f8169
[apple2] / apple2 / Makefile
1 #\r
2 # Unified Makefile for Apple 2 SDL\r
3 #\r
4 # by James L. Hammons\r
5 # (C) 2005 Underground Software\r
6 # This software is licensed under the GPL v2\r
7 #\r
8 \r
9 # Figure out which system we're compiling for, and set the appropriate variables\r
10 \r
11 ifeq "$(OSTYPE)" "msys"                                                 # Win32\r
12 \r
13 SYSTYPE    = __GCCWIN32__\r
14 EXESUFFIX  = .exe\r
15 GLLIB      = -lopengl32\r
16 ICON       = obj/icon.o\r
17 SDLLIBTYPE = --libs\r
18 MSG        = Win32 on MinGW\r
19 \r
20 else\r
21 #ifeq "$(OSTYPE)" "darwin"\r
22 ifeq "darwin" "$(findstring darwin,$(OSTYPE))"  # Should catch both 'darwin' and 'darwin7.0'\r
23 \r
24 SYSTYPE    = __GCCUNIX__ -D_OSX_\r
25 EXESUFFIX  =\r
26 GLLIB      =\r
27 ICON       =\r
28 SDLLIBTYPE = --static-libs\r
29 MSG        = Mac OS X\r
30 \r
31 else                                                                                    # *nix\r
32 \r
33 SYSTYPE    = __GCCUNIX__\r
34 EXESUFFIX  =\r
35 GLLIB      = -lGL\r
36 ICON       =\r
37 SDLLIBTYPE = --libs\r
38 MSG        = generic Unix/Linux\r
39 \r
40 endif\r
41 endif\r
42 \r
43 CC         = gcc\r
44 LD         = gcc\r
45 TARGET     = apple2\r
46 \r
47 # Note that we use optimization level 2 instead of 3--3 doesn't seem to gain much over 2\r
48 #CFLAGS   = -MMD -Wall -Wno-switch -O2 -D$(SYSTYPE) -ffast-math -fomit-frame-pointer `sdl-config --cflags`\r
49 #CPPFLAGS = -MMD -Wall -Wno-switch -Wno-non-virtual-dtor -O2 -D$(SYSTYPE) \\r
50 # No optimization and w/gcov flags, so that we get an accurate picture from gcov\r
51 #CFLAGS   = -MMD -Wall -Wno-switch -D$(SYSTYPE) \\r
52 #               -ffast-math -fomit-frame-pointer `sdl-config --cflags` -fprofile-arcs -ftest-coverage\r
53 #CPPFLAGS = -MMD -Wall -Wno-switch -Wno-non-virtual-dtor -D$(SYSTYPE) \\r
54 #               -ffast-math -fomit-frame-pointer `sdl-config --cflags` -fprofile-arcs -ftest-coverage\r
55 # No optimization for profiling with gprof...\r
56 CFLAGS   = -MMD -Wall -Wno-switch -D$(SYSTYPE) \\r
57                 -ffast-math `sdl-config --cflags` -pg\r
58 CPPFLAGS = -MMD -Wall -Wno-switch -Wno-non-virtual-dtor -D$(SYSTYPE) \\r
59                 -ffast-math `sdl-config --cflags` -pg\r
60 #               -fomit-frame-pointer `sdl-config --cflags` -g\r
61 #               -fomit-frame-pointer `sdl-config --cflags` -DLOG_UNMAPPED_MEMORY_ACCESSES\r
62 \r
63 LDFLAGS =\r
64 \r
65 #LIBS = -L/usr/local/lib -L/usr/lib `sdl-config $(SDLLIBTYPE)` -lstdc++ -lz $(GLLIB)\r
66 # Link in the gcov library (for profiling purposes)\r
67 #LIBS = -L/usr/local/lib -L/usr/lib `sdl-config $(SDLLIBTYPE)` -lstdc++ -lz $(GLLIB) -lgcov\r
68 # Link in the gprof lib\r
69 LIBS = -L/usr/local/lib -L/usr/lib `sdl-config $(SDLLIBTYPE)` -lstdc++ -lz $(GLLIB) -pg\r
70 \r
71 INCS = -I. -I./src -I/usr/local/include -I/usr/include\r
72 \r
73 OBJS = \\r
74         obj/button.o          \\r
75         obj/draggablewindow.o \\r
76         obj/element.o         \\r
77         obj/gui.o             \\r
78         obj/guimisc.o         \\r
79         obj/menu.o            \\r
80         obj/textedit.o        \\r
81         obj/window.o          \\r
82                           \\r
83         obj/applevideo.o      \\r
84         obj/ay8910.o          \\r
85         obj/dis65c02.o        \\r
86         obj/floppy.o          \\r
87         obj/log.o             \\r
88         obj/sdlemu_config.o   \\r
89         obj/sdlemu_opengl.o   \\r
90         obj/settings.o        \\r
91         obj/sound.o           \\r
92         obj/timing.o          \\r
93         obj/v65c02.o          \\r
94         obj/video.o           \\r
95         obj/apple2.o          \\r
96         $(ICON)\r
97 \r
98 all: checkenv message obj $(TARGET)$(EXESUFFIX)\r
99         @echo\r
100         @echo "*** Looks like it compiled OK... Give it a whirl!"\r
101 \r
102 # Check the compilation environment, barf if not appropriate\r
103 \r
104 checkenv:\r
105         @echo\r
106         @echo -n "*** Checking compilation environment... "\r
107 ifeq "" "$(shell which sdl-config)"\r
108         @echo\r
109         @echo\r
110         @echo "It seems that you don't have the SDL development libraries installed. If you"\r
111         @echo "have installed them, make sure that the sdl-config file is somewhere in your"\r
112         @echo "path and is executable."\r
113         @echo\r
114 #Is there a better way to break out of the makefile?\r
115         @break\r
116 else\r
117         @echo "OK"\r
118 endif\r
119 \r
120 message:\r
121         @echo\r
122         @echo "*** Building Apple 2 SDL for $(MSG)..."\r
123         @echo\r
124 \r
125 clean:\r
126         @echo -n "*** Cleaning out the garbage..."\r
127         @rm -rf obj\r
128         @rm -f ./$(TARGET)$(EXESUFFIX)\r
129         @echo "done!"\r
130 \r
131 obj:\r
132         @mkdir obj\r
133 \r
134 # This is only done for Win32 at the moment...\r
135 \r
136 ifneq "" "$(ICON)"\r
137 $(ICON): res/$(TARGET).rc res/$(TARGET).ico\r
138         @echo "*** Processing icon..."\r
139         @windres -i res/$(TARGET).rc -o $(ICON) --include-dir=./res\r
140 endif\r
141 \r
142 obj/%.o: src/%.c\r
143         @echo "*** Compiling $<..."\r
144         @$(CC) $(CFLAGS) $(INCS) -c $< -o $@\r
145 \r
146 obj/%.o: src/%.cpp\r
147         @echo "*** Compiling $<..."\r
148         @$(CC) $(CPPFLAGS) $(INCS) -c $< -o $@\r
149 \r
150 #GUI compilation...\r
151 obj/%.o: src/gui/%.cpp\r
152         @echo "*** Compiling $<..."\r
153         @$(CC) $(CPPFLAGS) $(INCS) -c $< -o $@\r
154 \r
155 $(TARGET)$(EXESUFFIX): $(OBJS)\r
156         @echo "*** Linking it all together..."\r
157         @$(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)\r
158 #       strip --strip-all vj$(EXESUFFIX)\r
159 #       upx -9 vj$(EXESUFFIX)\r
160 \r
161 # Pull in dependencies autogenerated by gcc's -MMD switch\r
162 # The "-" in front in there just in case they haven't been created yet\r
163 \r
164 -include obj/*.d\r