1f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## -*-makefile-*-
2f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Linux-specific setup
3f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Copyright (c) 1999-2009, International Business Machines Corporation and
4f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## others. All Rights Reserved.
5f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
6f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Commands to generate dependency files
7f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)GEN_DEPS.c=	$(CC) -E -MM $(DEFS) $(CPPFLAGS)
8f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)GEN_DEPS.cc=	$(CXX) -E -MM $(DEFS) $(CPPFLAGS)
9f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
10f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Flags for position independent code
11f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)SHAREDLIBCFLAGS = -fPIC
12f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)SHAREDLIBCXXFLAGS = -fPIC
13f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)SHAREDLIBCPPFLAGS = -DPIC
14f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
15f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Additional flags when building libraries and with threads
16f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)THREADSCPPFLAGS = -D_REENTRANT
17f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LIBCPPFLAGS =
18f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
19f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# The tests need complete IEEE floating point support
20f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)CFLAGS += -mieee
21f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)CXXFLAGS += -mieee
22f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
23f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Compiler switch to embed a runtime search path
24f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LD_RPATH=	
25f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LD_RPATH_PRE=	-Wl,-rpath,
26f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
27f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Compiler switch to embed a library name
28f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LD_SONAME = -Wl,-soname -Wl,$(notdir $(MIDDLE_SO_TARGET))
29f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
30f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
31f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Shared library options
32f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LD_SOOPTIONS= -Wl,-Bsymbolic
33f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
34f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Shared object suffix
35f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)SO = so
36f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Non-shared intermediate object suffix
37f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)STATIC_O = ao
38f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
39f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Compilation rules
40f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.$(STATIC_O): $(srcdir)/%.c
41f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)	$(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $<
42f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.o: $(srcdir)/%.c
43f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)	$(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $<
44f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
45f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.$(STATIC_O): $(srcdir)/%.cpp
46f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)	$(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
47f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.o: $(srcdir)/%.cpp
48f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)	$(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
49f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
50f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
51f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Dependency rules
52f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.d: $(srcdir)/%.c
53f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)	@echo "generating dependency information for $<"
54f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)	@$(SHELL) -ec '$(GEN_DEPS.c) $< \
55f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)		| sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \
56f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)		[ -s $@ ] || rm -f $@'
57f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
58f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.d: $(srcdir)/%.cpp
59f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)	@echo "generating dependency information for $<"
60f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)	@$(SHELL) -ec '$(GEN_DEPS.cc) $< \
61f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)		| sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \
62f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)		[ -s $@ ] || rm -f $@'
63f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
64f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Versioned libraries rules
65f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
66f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.$(SO).$(SO_TARGET_VERSION_MAJOR): %.$(SO).$(SO_TARGET_VERSION)
67f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)	$(RM) $@ && ln -s ${<F} $@
68f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
69f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)	$(RM) $@ && ln -s ${*F}.$(SO).$(SO_TARGET_VERSION) $@
70f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
71f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# The type of assembly to write for generating an object file
72f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)GENCCODE_ASSEMBLY=-a gcc
73f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
74f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)##  Bind internal references
75f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
76f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# LDflags that pkgdata will use
77f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)BIR_LDFLAGS= -Wl,-Bsymbolic
78f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
79f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# Dependencies [i.e. map files] for the final library
80f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)BIR_DEPS=
81f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
82f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## End Linux-specific setup
83f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)
84