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