Synch'd Scout with source from its CVS repository.
[AROS-Contrib.git] / scout / source / Makefile
blob9c1f95177e1a74a2baf9157fe2e600713a632efc
1 # You may call this makefile with:
2 # make OS=<target>
3 # where target is your crosscompiler prefix (like ppc-morphos,
5 # Note that you may omit OS specification, in this case your host OS will be detected
7 # Evaluate explicit target specification
8 ifneq ($(OS),)
9 PREFIX := $(OS)-
10 HOST := $(subst -, ,$(OS))
11 HOST_CPU := $(word 1,$(HOST))
12 HOST_OS := $(word 2,$(HOST))
13 else
14 PREFIX :=
15 HOST_OS := $(shell uname)
16 endif
18 # Translate canonical OS name to lowercase
19 ifeq ($(HOST_OS),AROS)
20 HOST_OS := aros
21 # TODO: detect CPU here for self-hosted build under AROS
22 endif
23 ifeq ($(HOST_OS),MorphOS)
24 HOST_OS := morphos
25 HOST_CPU := ppc
26 endif
28 # target-dependent options
29 ifeq ($(HOST_OS),aros)
30 NOIXEMUL :=
31 SYSLIB := -larossupport -larosm -lmui -lrom
32 else
33 NOIXEMUL := -noixemul
34 SYSLIB := -lc -ldebug -lmath
35 endif
36 ifeq ($(HOST_OS),morphos)
37 ALIB := -labox -laboxstubs
38 else
39 ALIB := -lamiga
40 endif
41 ifeq ($(HOST_CPU),ppc)
42 CPU := -mcpu=750
43 else
44 CPU :=
45 endif
47 PROJECT= Scout
48 TARGET= $(PROJECT)
50 VERSION= 37
52 OUT= Scout
54 CC= $(PREFIX)gcc
55 LD= $(PREFIX)gcc
56 STRIP= $(PREFIX)strip
57 OBJDUMP= $(PREFIX)objdump
58 RM= rm -f
60 OBJDIR= .obj
61 CLASSESDIR= classes
62 EXTRASRC= extrasrc
64 OPTIMIZE= -O3
65 DEFINE=
66 CFLAGS:= $(USER_CFLAGS) -Wall $(NOIXEMUL) $(CPU) -I. -idirafter ./include -I./classes -I./tbLib -c
67 LFLAGS= $(NOIXEMUL) -nostartfiles
69 LOCALE= locale
71 # $(PROJECT).o _has_ to be the first module !!! (Because we use no
72 # startup-code)
74 OBJECTS=$(OBJDIR)/startup.o \
75 $(OBJDIR)/Scout.o \
76 $(OBJDIR)/scout_logo.o \
77 $(OBJDIR)/scout_net.o \
78 $(OBJDIR)/$(CLASSESDIR)/fontdisplay_class.o \
79 $(OBJDIR)/$(CLASSESDIR)/port_button.o \
80 $(OBJDIR)/$(CLASSESDIR)/scout_about.o \
81 $(OBJDIR)/$(CLASSESDIR)/scout_allocations.o \
82 $(OBJDIR)/$(CLASSESDIR)/scout_arexx.o \
83 $(OBJDIR)/$(CLASSESDIR)/scout_asm.o \
84 $(OBJDIR)/$(CLASSESDIR)/scout_assigns.o \
85 $(OBJDIR)/$(CLASSESDIR)/scout_audiomode.o \
86 $(OBJDIR)/$(CLASSESDIR)/scout_audiomode_detail.o \
87 $(OBJDIR)/$(CLASSESDIR)/scout_catalogs.o \
88 $(OBJDIR)/$(CLASSESDIR)/scout_classes.o \
89 $(OBJDIR)/$(CLASSESDIR)/scout_classes_detail.o \
90 $(OBJDIR)/$(CLASSESDIR)/scout_commands.o \
91 $(OBJDIR)/$(CLASSESDIR)/scout_commodity.o \
92 $(OBJDIR)/$(CLASSESDIR)/scout_commodity_detail.o \
93 $(OBJDIR)/$(CLASSESDIR)/scout_customclasses.o \
94 $(OBJDIR)/$(CLASSESDIR)/scout_devices.o \
95 $(OBJDIR)/$(CLASSESDIR)/scout_devices_detail.o \
96 $(OBJDIR)/$(CLASSESDIR)/scout_expansions.o \
97 $(OBJDIR)/$(CLASSESDIR)/scout_expansions_detail.o \
98 $(OBJDIR)/$(CLASSESDIR)/scout_extras.o \
99 $(OBJDIR)/$(CLASSESDIR)/scout_flags.o \
100 $(OBJDIR)/$(CLASSESDIR)/scout_fonts.o \
101 $(OBJDIR)/$(CLASSESDIR)/scout_fonts_detail.o \
102 $(OBJDIR)/$(CLASSESDIR)/scout_functions.o \
103 $(OBJDIR)/$(CLASSESDIR)/scout_inputhandlers.o \
104 $(OBJDIR)/$(CLASSESDIR)/scout_inputhandlers_detail.o \
105 $(OBJDIR)/$(CLASSESDIR)/scout_interrupts.o \
106 $(OBJDIR)/$(CLASSESDIR)/scout_interrupts_detail.o \
107 $(OBJDIR)/$(CLASSESDIR)/scout_libraries.o \
108 $(OBJDIR)/$(CLASSESDIR)/scout_libraries_detail.o \
109 $(OBJDIR)/$(CLASSESDIR)/scout_locks.o \
110 $(OBJDIR)/$(CLASSESDIR)/scout_lowmemory.o \
111 $(OBJDIR)/$(CLASSESDIR)/scout_lowmemory_detail.o \
112 $(OBJDIR)/$(CLASSESDIR)/scout_main.o \
113 $(OBJDIR)/$(CLASSESDIR)/scout_memory.o \
114 $(OBJDIR)/$(CLASSESDIR)/scout_memory_detail.o \
115 $(OBJDIR)/$(CLASSESDIR)/scout_monitors.o \
116 $(OBJDIR)/$(CLASSESDIR)/scout_monitors_detail.o \
117 $(OBJDIR)/$(CLASSESDIR)/scout_monitorclass.o \
118 $(OBJDIR)/$(CLASSESDIR)/scout_monitorclass_detail.o \
119 $(OBJDIR)/$(CLASSESDIR)/scout_mount.o \
120 $(OBJDIR)/$(CLASSESDIR)/scout_mount_detail.o \
121 $(OBJDIR)/$(CLASSESDIR)/scout_oop.o \
122 $(OBJDIR)/$(CLASSESDIR)/scout_oop_detail.o \
123 $(OBJDIR)/$(CLASSESDIR)/scout_parentwindow.o \
124 $(OBJDIR)/$(CLASSESDIR)/scout_patches.o \
125 $(OBJDIR)/$(CLASSESDIR)/scout_ports.o \
126 $(OBJDIR)/$(CLASSESDIR)/scout_ports_detail.o \
127 $(OBJDIR)/$(CLASSESDIR)/scout_print.o \
128 $(OBJDIR)/$(CLASSESDIR)/scout_priority.o \
129 $(OBJDIR)/$(CLASSESDIR)/scout_resethandlers.o \
130 $(OBJDIR)/$(CLASSESDIR)/scout_resethandlers_detail.o \
131 $(OBJDIR)/$(CLASSESDIR)/scout_residents.o \
132 $(OBJDIR)/$(CLASSESDIR)/scout_residents_detail.o \
133 $(OBJDIR)/$(CLASSESDIR)/scout_resources.o \
134 $(OBJDIR)/$(CLASSESDIR)/scout_resources_detail.o \
135 $(OBJDIR)/$(CLASSESDIR)/scout_screenmode.o \
136 $(OBJDIR)/$(CLASSESDIR)/scout_screenmode_detail.o \
137 $(OBJDIR)/$(CLASSESDIR)/scout_semaphores.o \
138 $(OBJDIR)/$(CLASSESDIR)/scout_signal.o \
139 $(OBJDIR)/$(CLASSESDIR)/scout_system.o \
140 $(OBJDIR)/$(CLASSESDIR)/scout_tasks.o \
141 $(OBJDIR)/$(CLASSESDIR)/scout_tasks_detail.o \
142 $(OBJDIR)/$(CLASSESDIR)/scout_timer.o \
143 $(OBJDIR)/$(CLASSESDIR)/scout_vectors.o \
144 $(OBJDIR)/$(CLASSESDIR)/scout_version.o \
145 $(OBJDIR)/$(CLASSESDIR)/scout_windows.o \
146 $(OBJDIR)/$(CLASSESDIR)/scout_windows_detail.o \
147 $(OBJDIR)/$(CLASSESDIR)/scout_disassembler.o \
148 $(OBJDIR)/$(CLASSESDIR)/disassembler_button.o \
149 $(OBJDIR)/$(CLASSESDIR)/flags_button.o \
150 $(OBJDIR)/$(CLASSESDIR)/monitor_button.o \
151 $(OBJDIR)/$(CLASSESDIR)/task_button.o \
152 $(OBJDIR)/hexdump.o \
153 $(OBJDIR)/scout_cat.o \
154 $(OBJDIR)/SmartReadArgs.o \
155 $(OBJDIR)/all_gcc.o
157 HEADERS=system_headers.h startup.h scout.h \
158 scout_logo.h scout_net.h \
159 scout_defs.h scout_tags.h startup_defs.h \
160 $(CLASSESDIR)/fontdisplay_class.h \
161 $(CLASSESDIR)/port_button.h \
162 $(CLASSESDIR)/scout_about.h \
163 $(CLASSESDIR)/scout_allocations.h \
164 $(CLASSESDIR)/scout_arexx.h \
165 $(CLASSESDIR)/scout_asm.h \
166 $(CLASSESDIR)/scout_assigns.h \
167 $(CLASSESDIR)/scout_audiomode.h \
168 $(CLASSESDIR)/scout_audiomode_detail.h \
169 $(CLASSESDIR)/scout_catalogs.h \
170 $(CLASSESDIR)/scout_classes.h \
171 $(CLASSESDIR)/scout_classes_detail.h \
172 $(CLASSESDIR)/scout_commands.h \
173 $(CLASSESDIR)/scout_commodity.h \
174 $(CLASSESDIR)/scout_commodity_detail.h \
175 $(CLASSESDIR)/scout_customclasses.h \
176 $(CLASSESDIR)/scout_devices.h \
177 $(CLASSESDIR)/scout_devices_detail.h \
178 $(CLASSESDIR)/scout_expansions.h \
179 $(CLASSESDIR)/scout_expansions_detail.h \
180 $(CLASSESDIR)/scout_extras.h \
181 $(CLASSESDIR)/scout_flags.h \
182 $(CLASSESDIR)/scout_fonts.h \
183 $(CLASSESDIR)/scout_fonts_detail.h \
184 $(CLASSESDIR)/scout_functions.h \
185 $(CLASSESDIR)/scout_inputhandlers.h \
186 $(CLASSESDIR)/scout_interrupts.h \
187 $(CLASSESDIR)/scout_interrupts_detail.h \
188 $(CLASSESDIR)/scout_libraries.h \
189 $(CLASSESDIR)/scout_libraries_detail.h \
190 $(CLASSESDIR)/scout_locks.h \
191 $(CLASSESDIR)/scout_lowmemory.h \
192 $(CLASSESDIR)/scout_lowmemory_detail.h \
193 $(CLASSESDIR)/scout_main.h \
194 $(CLASSESDIR)/scout_memory.h \
195 $(CLASSESDIR)/scout_memory_detail.h \
196 $(CLASSESDIR)/scout_mount.h \
197 $(CLASSESDIR)/scout_mount_detail.h \
198 $(CLASSESDIR)/scout_parentwindow.h \
199 $(CLASSESDIR)/scout_patches.h \
200 $(CLASSESDIR)/scout_ports.h \
201 $(CLASSESDIR)/scout_ports_detail.h \
202 $(CLASSESDIR)/scout_print.h \
203 $(CLASSESDIR)/scout_priority.h \
204 $(CLASSESDIR)/scout_resethandlers.h \
205 $(CLASSESDIR)/scout_residents.h \
206 $(CLASSESDIR)/scout_residents_detail.h \
207 $(CLASSESDIR)/scout_resources.h \
208 $(CLASSESDIR)/scout_resources_detail.h \
209 $(CLASSESDIR)/scout_screenmode.h \
210 $(CLASSESDIR)/scout_screenmode_detail.h \
211 $(CLASSESDIR)/scout_semaphores.h \
212 $(CLASSESDIR)/scout_signal.h \
213 $(CLASSESDIR)/scout_system.h \
214 $(CLASSESDIR)/scout_tasks.h \
215 $(CLASSESDIR)/scout_tasks_detail.h \
216 $(CLASSESDIR)/scout_timer.h \
217 $(CLASSESDIR)/scout_vectors.h \
218 $(CLASSESDIR)/scout_version.h \
219 $(CLASSESDIR)/scout_windows.h \
220 $(CLASSESDIR)/scout_windows_detail.h \
221 $(CLASSESDIR)/scout_disassembler.h \
222 $(CLASSESDIR)/disassembler_button.h \
223 $(CLASSESDIR)/flags_button.h \
224 $(CLASSESDIR)/task_button.h \
225 hexdump.h \
226 scout_cat.h \
227 SmartReadArgs.h \
228 include/extra.h
230 LIBS = -L./netlib -L./tbLib -L./lib $(ALIB) $(SYSLIB) -ltblib
232 all: $(OBJDIR) $(HEADERS) $(TARGET)
234 $(OBJDIR):
235 @mkdir $(OBJDIR)
236 @mkdir $(OBJDIR)/$(CLASSESDIR)
238 $(OBJDIR)/%.o: %.c
239 $(CC) $(CFLAGS) $(OPTIMIZE) $(DEFINE) $< -o $@
241 $(LOCALE)/%.catalog: $(LOCALE)/%.ct
242 flexcat $(LOCALE)/scout.cd $< catalog $@ flush
244 $(TARGET): $(OBJECTS) tbLib/libtblib.a
245 $(LD) $(OBJECTS) -o $@.debug $(LIBS) $(LFLAGS)
246 $(STRIP) -R.comment -R.sdata2 -S $@.debug -o $@
247 chmod +x $@
249 scout_cat.h: $(LOCALE)/scout.cd
250 flexcat locale/scout.cd scout_cat.h=C_h.sd scout_cat.c=C_c.sd
252 $(OBJDIR)/scout_cat.o: scout_cat.h
254 $(OBJDIR)/$(CLASSESDIR)/scout_customclasses.o: $(CLASSESDIR)/scout_customclasses.c
255 $(CC) $(CFLAGS) $(OPTIMIZE) $(DEFINE) $< -o $@
257 $(OBJDIR)/$(CLASSESDIR)/scout_about.o: $(CLASSESDIR)/scout_about.c $(CLASSESDIR)/scout_version.h Scout_rev.h
258 $(CC) $(CFLAGS) $(OPTIMIZE) $(DEFINE) $< -o $@
260 $(OBJDIR)/$(CLASSESDIR)/scout_version.o: $(CLASSESDIR)/scout_version.c $(CLASSESDIR)/scout_version.h Scout_rev.h
261 $(CC) $(CFLAGS) $(OPTIMIZE) $(DEFINE) $< -o $@
263 $(OBJDIR)/all_gcc.o: all_gcc.c $(EXTRASRC)/init_inet_daemon.c $(EXTRASRC)/vasprintf.c
265 tbLib/libtblib.a:
266 @cd tbLib; make OS=$(OS) USER_CFLAGS=$(USER_CFLAGS)
268 clean:
269 -$(RM) $(OBJDIR)/*.o $(OBJDIR)/$(CLASSESDIR)/*.o $(TARGET) $(TARGET).debug $(TARGET).dump
270 @cd tbLib; make $@
272 realclean: clean
274 version:
275 bumprev2 $(VERSION) $(PROJECT)
277 date:
278 @eval `type $(PROJECT)_rev.rev`-1 >t:$(PROJECT)_rev.rev
279 @copy t:$(PROJECT)_rev.rev $(PROJECT)_rev.rev
280 @delete >nil: t:$(PROJECT)_rev.rev
281 @smake version
283 dump:
284 $(OBJDUMP) --section-headers --all-headers --reloc --syms --disassemble-all $(TARGET).debug >$(TARGET).dump
286 install: $(PROJECT)
287 copy $(PROJECT) Work:Debug/Scout
289 cvs-tag:
290 cvs -q tag V$(VERSION)_`type $(PROJECT)_rev.rev`
292 cvs-update:
293 cvs update
295 doc:
296 @execute <<
297 pushcd help
298 smake
299 popcd