1f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## -*-makefile-*- 2f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## BeOS-specific setup 3f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Copyright (c) 2003-2006, International Business Machines Corporation and 4f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## others. All Rights Reserved. 5f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## 6f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Original author: Andrew Bachmann 7f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 8f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Commands to generate dependency files 9f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)GEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS) 10f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)GEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS) 11f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 12f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# Safe optimizations 13f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#OPTIMIZATIONS= -fdefault-inline -fdefer-pop -fforce-mem -fforce-addr \ 14f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# -finline -finline-functions \ 15f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# -fkeep-inline-functions -fkeep-static-consts -fbranch-count-reg \ 16f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# -ffunction-cse -fstrength-reduce -fthread-jumps -fcse-follow-jumps \ 17f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# -fcse-skip-blocks -frerun-cse-after-loop -frerun-loop-opt \ 18f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# -fexpensive-optimizations -foptimize-register-move -fregmove \ 19f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# -fschedule-insns -fschedule-insns2 -ffloat-store -funroll-loops \ 20f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# -fmove-all-movables -freduce-all-givs -fpeephole \ 21f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# -funroll-all-loops -ffunction-sections -fdata-sections 22f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 23f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# BeOS gccs (geekgadgets + 2.95.3) have this old bug: 24f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# after this: const wchar_t x[] = L"foo"; 25f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# x[2] is "optimized" into: (wchar_t)((char *)x)[2] (== 0) 26f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# 27f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# see also: http://gcc.gnu.org/ml/gcc-patches/2000-09/msg00454.html 28f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# 29f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# Unfortunately this behavior isn't controlled by a flag so we can't 30f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# use any O optimizations at all. (the behavior kicks in at -O1) 31f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 32f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# Optimizations aren't currently defined in the mh files. 33f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# So Don't override any flags set by the user or runConfigureICU. 34f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#CFLAGS += $(OPTIMIZATIONS) 35f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#CXXFLAGS += $(OPTIMIZATIONS) 36f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 37f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# Use -nostart instead of -shared 38f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)SHLIB.c= $(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -nostart 39f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)SHLIB.cc= $(CXX) $(DEFS) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -nostart 40f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 41f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Flags for position independent code 42f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)SHAREDLIBCFLAGS = -fPIC 43f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)SHAREDLIBCXXFLAGS = -fPIC 44f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)SHAREDLIBCPPFLAGS = -DPIC 45f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 46f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Additional flags when building libraries and with threads 47f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LIBCPPFLAGS = 48f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)THREADSCPPFLAGS = 49f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 50f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Compiler switch to embed a runtime search path 51f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LD_RPATH= 52f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LD_RPATH_PRE = -Wl,-rpath, 53f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 54f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Compiler switch to embed a library name 55f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LD_SONAME = -Wl,-soname -Wl,$(notdir $(MIDDLE_SO_TARGET)) 56f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 57f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Shared object suffix 58f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)SO = so 59f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Non-shared intermediate object suffix 60f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)STATIC_O = ao 61f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 62f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Compilation rules 63f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.$(STATIC_O): $(srcdir)/%.c 64f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $< 65f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.o: $(srcdir)/%.c 66f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $< 67f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 68f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.$(STATIC_O): $(srcdir)/%.cpp 69f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $< 70f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.o: $(srcdir)/%.cpp 71f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $< 72f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 73f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 74f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Dependency rules 75f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.d: $(srcdir)/%.c 76f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) @echo "generating dependency information for $<" 77f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) @$(SHELL) -ec '$(GEN_DEPS.c) $< \ 78f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \ 79f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) [ -s $@ ] || rm -f $@' 80f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 81f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.d: $(srcdir)/%.cpp 82f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) @echo "generating dependency information for $<" 83f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) @$(SHELL) -ec '$(GEN_DEPS.cc) $< \ 84f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \ 85f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) [ -s $@ ] || rm -f $@' 86f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 87f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Versioned libraries rules 88f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 89f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.$(SO).$(SO_TARGET_VERSION_MAJOR): %.$(SO).$(SO_TARGET_VERSION) 90f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) $(RM) $@ && ln -s ${<F} $@ 91f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR) 92f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) $(RM) $@ && ln -s ${*F}.$(SO).$(SO_TARGET_VERSION) $@ 93f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 94f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Bind internal references 95f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 96f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# LDflags that pkgdata will use 97f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)BIR_LDFLAGS= -Wl,-Bsymbolic 98f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 99f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# Dependencies [i.e. map files] for the final library 100f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)BIR_DEPS= 101f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 102f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# Use LIBRARY_PATH instead of LD_LIBRARY_PATH 103f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LDLIBRARYPATH_ENVVAR= LIBRARY_PATH 104f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 105f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## End BeOS-specific setup 106f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 107