1 #/***************************************************************************
3 # openurl.library - universal URL display and browser launcher library
4 # Copyright (C) 1998-2005 by Troels Walsted Hansen, et al.
5 # Copyright (C) 2005-2009 by openurl.library Open Source Team
7 # This library is free software; it has been placed in the public domain
8 # and you can freely redistribute it and/or modify it. Please note, however,
9 # that some components may be under the LGPL or GPL license.
11 # This library is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15 # openurl.library project: http://sourceforge.net/projects/openurllib/
19 #***************************************************************************/
21 ###########################################################################
22 # This makefile is a very generic one. It tries to identify both, the host
23 # and the target operating system for which YAM should be compiled.
24 # However, this auto-detection can be easily overridden by directly
25 # specifying an option on the commandline while calling 'make'.
29 # # to explicitly compile for AmigaOS3
32 # # to compile for AmigaOS4 but without debugging
33 # > make OS=os4 DEBUG=
36 #############################################
37 # find out the HOST operating system
38 # on which this makefile is run
39 HOST ?
= $(shell uname
)
40 ifeq ($(HOST
), AmigaOS
)
41 ifeq ($(shell uname
-m
), powerpc
)
44 ifeq ($(shell uname
-m
), ppc
)
49 # if no host is identifed (no uname tool)
50 # we assume a AmigaOS build
55 #############################################
56 # now we find out the target OS for
57 # which we are going to compile YAM in case
58 # the caller didn't yet define OS himself
60 ifeq ($(HOST
), AmigaOS4
)
63 ifeq ($(HOST
), AmigaOS
)
66 ifeq ($(HOST
), MorphOS
)
70 # now we find out which CPU system aros will be used
71 ifeq ($(shell uname
-m
), powerpc
)
74 ifeq ($(shell uname
-m
), ppc
)
77 ifeq ($(shell uname
-m
), i386
)
80 ifeq ($(shell uname
-m
), i686
)
83 ifeq ($(shell uname
-m
), x86_64
)
94 #############################################
95 # define common commands we use in this
96 # makefile. Please note that each of them
97 # might be overridden on the commandline.
105 RMDIR
= delete
force all
107 CHMOD
= protect FLAGS
=rwed
118 # override some variables for non-native builds (cross-compiler)
119 ifneq ($(HOST
), AmigaOS
)
120 ifneq ($(HOST
), AmigaOS4
)
121 ifneq ($(HOST
), MorphOS
)
123 # when we end up here this is either a unix or Aros host
124 # so lets use unix kind of commands
138 ###########################################################################
139 # CPU and DEBUG can be defined outside, defaults to above
140 # using e.g. "make DEBUG= CPU=-mcpu=603e" produces optimized non-debug
143 # OPTFLAGS are disabled by DEBUG normally!
145 # ignored warnings are:
146 # none - because we want to compile with -Wall all the time
153 DEPFILE
= Makefile.dep
156 TARGET
= $(BINDIR
)/openurl.library
158 # Common compiler/linker flags
159 WARN
= -W
-Wall
-Wwrite-strings
-Wpointer-arith
-Wsign-compare
160 OPTFLAGS
= -O3
-fomit-frame-pointer
162 DEBUGSYM
= -g
-gstabs
163 CFLAGS
= -I.
-I..
/include $(CPU
) $(WARN
) $(OPTFLAGS
) $(DEBUG
) $(DEBUGSYM
) $(USER_CFLAGS
)
164 LDFLAGS
= $(CPU
) $(DEBUGSYM
) -nostartfiles
175 # different options per target OS
178 ##############################
181 # Compiler/link/strip commands
182 ifneq ($(HOST
), AmigaOS4
)
184 STRIP
= ppc-amigaos-strip
185 OBJDUMP
= ppc-amigaos-objdump
188 # Compiler/Linker flags
191 WARN
+= -Wdeclaration-after-statement
-Wdisabled-optimization
193 CFLAGS
+= -mcrt
=$(CRT
) -D__USE_INLINE__
-D__NEW_TIMEVAL_DEFINITION_USED__ \
194 $(REDEFINE
) -Wa
,-mregnames
195 LDFLAGS
+= -mcrt
=$(CRT
)
197 # additional object files required
198 OBJS
+= openurl_68k.o
203 ##############################
206 # Compiler/link/strip commands
207 ifneq ($(HOST
), AmigaOS
)
208 CC
= m68k-amigaos-gcc
209 STRIP
= m68k-amigaos-strip
210 OBJDUMP
= m68k-amigaos-objdump
213 # Compiler/Linker flags
214 CPU
= -m68020-60
-msoft-float
-D__amigaos3__
222 ##############################
225 # Compiler/link/strip commands
226 ifneq ($(HOST
), MorphOS
)
228 STRIP
= ppc-morphos-strip
229 OBJDUMP
= ppc-morphos-objdump
232 # Compiler/Linker flags
238 # additional object files required
239 OBJS
+= stubs-morphos.o
242 ifeq ($(OS
), aros-i386
)
244 ##############################
247 ifneq ($(HOST
), AROS
)
249 STRIP
= i386-aros-strip
250 OBJDUMP
= i386-aros-objdump
253 # Compiler/Linker flags
254 OPTFLAGS
= -O2
-fomit-frame-pointer
255 CFLAGS
+= -Wno-pointer-sign
256 LDLIBS
+= -larossupport
-lrom
259 ifeq ($(OS
), aros-ppc
)
261 ##############################
264 ifneq ($(HOST
), AROS
)
266 STRIP
= ppc-aros-strip
267 OBJDUMP
= ppc-aros-objdump
270 # Compiler/Linker flags
271 OPTFLAGS
= -O2
-fomit-frame-pointer
272 CFLAGS
+= -Wno-pointer-sign
273 LDLIBS
+= -larossupport
-lrom
276 ifeq ($(OS
), aros-x86_64
)
278 ##############################
281 ifneq ($(HOST
), AROS
)
283 STRIP
= x86_64-aros-strip
284 OBJDUMP
= x86_64-aros-objdump
287 # Compiler/Linker flags
288 OPTFLAGS
= -O2
-fomit-frame-pointer
289 CFLAGS
+= -Wno-pointer-sign
290 LDLIBS
+= -larossupport
-lrom
299 ###########################################################################
300 # Here starts all stuff that is common for all target platforms and
305 ifeq ($(wildcard $(DEPFILE
)),$(DEPFILE
))
306 # great, we have a dependecies file, let's make our target
307 all: $(BINDIR
) $(OBJDIR
) $(TARGET
)
309 # no dependecies, create it and then call make again
311 @make
--no-print-directory
all
314 # make the object directories
319 # make the object directories
324 # for compiling single .c files
327 @
$(CC
) $(CFLAGS
) -c
$< -o
$@
329 # for linking the target
330 $(TARGET
): $(addprefix $(OBJDIR
)/,$(OBJS
))
332 @
$(CC
) $(LDFLAGS
) -o
$@.debug
$(addprefix $(OBJDIR
)/,$(OBJS
)) $(LDLIBS
) -Wl
,--cref
,-M
,-Map
=$@.map
334 @
$(STRIP
) --preserve-dates
-R.comment
-R.sdata2
-S
-o
$@
$@.debug
337 # for creating a .dump file
340 -$(OBJDUMP
) --section-headers
--all-headers
--reloc
--disassemble-all
$(TARGET
).debug
> $(TARGET
).dump
345 -$(RM
) $(TARGET
) $(TARGET
).debug
$(TARGET
).map
$(addprefix $(OBJDIR
)/,$(OBJS
))
347 # clean all including .obj directory
352 # clean all stuff, including our autotools
357 #install the newly built library to LIBS:
360 -$(CP
) $(TARGET
) LIBS
:
362 ## DEPENDENCY GENERATION ##############
366 @echo
" MK $(DEPFILE)"
367 @echo
"# AUTOGENERATED! DO NOT EDIT!!!" >$(DEPFILE
)
368 @
$(CC
) -MM
-MG
$(CFLAGS
) $(wildcard *.c
) >>$(DEPFILE
)
369 @echo
"# AUTOGENERATED! DO NOT EDIT!!!" >>$(DEPFILE
)
370 @
$(SED
) -i
's,^\(.*\)\.o:,$$\(OBJDIR\)/\1.o:,g' $(DEPFILE
)
372 # include dependencies file