mh-beos revision c73f511526464f8e56c242df80552e9b0d94ae3d
167bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe## -*-makefile-*-
267bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe## BeOS-specific setup
367bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe## Copyright (c) 2003-2006, International Business Machines Corporation and
467bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe## others. All Rights Reserved.
567bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe##
667bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe## Original author: Andrew Bachmann
767bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
867bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe## Commands to generate dependency files
967bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeGEN_DEPS.c=  $(CC) -E -MM $(DEFS) $(CPPFLAGS)
1067bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeGEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS)
1167bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
1267bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe# Safe optimizations
1367bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#OPTIMIZATIONS= -fdefault-inline -fdefer-pop -fforce-mem -fforce-addr \
1467bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#	  -finline -finline-functions \
1567bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#	  -fkeep-inline-functions -fkeep-static-consts -fbranch-count-reg \
1667bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#	  -ffunction-cse -fstrength-reduce -fthread-jumps -fcse-follow-jumps \
1767bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#	  -fcse-skip-blocks -frerun-cse-after-loop -frerun-loop-opt \
1867bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#	  -fexpensive-optimizations -foptimize-register-move -fregmove \
1967bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#	  -fschedule-insns -fschedule-insns2 -ffloat-store -funroll-loops \
2067bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#	  -fmove-all-movables -freduce-all-givs -fpeephole \
2167bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#	  -funroll-all-loops -ffunction-sections -fdata-sections
2267bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
2367bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe# BeOS gccs (geekgadgets + 2.95.3) have this old bug: 
2467bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe# after this:          const wchar_t x[] = L"foo";
2567bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe# x[2] is "optimized" into: (wchar_t)((char *)x)[2] (== 0)
2667bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#
2767bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe# see also: http://gcc.gnu.org/ml/gcc-patches/2000-09/msg00454.html
2867bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#
2967bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe# Unfortunately this behavior isn't controlled by a flag so we can't
3067bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe# use any O optimizations at all. (the behavior kicks in at -O1)
3167bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
3267bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe# Optimizations aren't currently defined in the mh files.
3367bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe# So Don't override any flags set by the user or runConfigureICU.
3467bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#CFLAGS += $(OPTIMIZATIONS)
3567bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#CXXFLAGS += $(OPTIMIZATIONS)
3667bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
3767bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe# Use -nostart instead of -shared
3867bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeSHLIB.c=      $(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -nostart
3967bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeSHLIB.cc=     $(CXX) $(DEFS) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -nostart
4067bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
4167bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe## Flags for position independent code
4267bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeSHAREDLIBCFLAGS = -fPIC
4367bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeSHAREDLIBCXXFLAGS = -fPIC
4467bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeSHAREDLIBCPPFLAGS = -DPIC
4567bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
4667bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe## Additional flags when building libraries and with threads
4767bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeLIBCPPFLAGS = 
4867bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeTHREADSCPPFLAGS = 
4967bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
5067bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe## Compiler switch to embed a runtime search path
5167bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeLD_RPATH=	
5267bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeLD_RPATH_PRE = -Wl,-rpath,
5367bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
5467bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe## Compiler switch to embed a library name
5567bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeLD_SONAME = -Wl,-soname -Wl,$(notdir $(MIDDLE_SO_TARGET))
5667bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
5767bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe## Shared object suffix
5867bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeSO = so
5967bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe## Non-shared intermediate object suffix
6067bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeSTATIC_O = ao
6167bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
6267bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe## Compilation rules
6367bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe%.$(STATIC_O): $(srcdir)/%.c
6467bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe	$(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $<
6567bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe%.o: $(srcdir)/%.c
6667bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe	$(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $<
6767bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
6867bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe%.$(STATIC_O): $(srcdir)/%.cpp
6967bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe	$(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
7067bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe%.o: $(srcdir)/%.cpp
7167bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe	$(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
7267bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
7367bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
7467bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe## Dependency rules
7567bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe%.d: $(srcdir)/%.c
7667bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe	@echo "generating dependency information for $<"
7767bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe	@$(SHELL) -ec '$(GEN_DEPS.c) $< \
7867bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe		| sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \
7967bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe		[ -s $@ ] || rm -f $@'
8067bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
8167bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe%.d: $(srcdir)/%.cpp
8267bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe	@echo "generating dependency information for $<"
8367bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe	@$(SHELL) -ec '$(GEN_DEPS.cc) $< \
8467bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe		| sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \
8567bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe		[ -s $@ ] || rm -f $@'
8667bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
8767bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe## Versioned libraries rules
8867bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
8967bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe%.$(SO).$(SO_TARGET_VERSION_MAJOR): %.$(SO).$(SO_TARGET_VERSION)
9067bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe	$(RM) $@ && ln -s ${<F} $@
9167bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
9267bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe	$(RM) $@ && ln -s ${*F}.$(SO).$(SO_TARGET_VERSION) $@
9367bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
9467bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe##  Bind internal references
9567bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
9667bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe# LDflags that pkgdata will use
9767bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeBIR_LDFLAGS= -Wl,-Bsymbolic
9867bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
9967bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe# Dependencies [i.e. map files] for the final library
10067bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeBIR_DEPS=
10167bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
10267bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe# Use LIBRARY_PATH instead of LD_LIBRARY_PATH
10367bf982340d95ca98098ea050b54b4c7adb116c0Jens AxboeLDLIBRARYPATH_ENVVAR= LIBRARY_PATH
10467bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
105cb1125b0b197278894896af14fe8ecdf7b92756dJens Axboe## End BeOS-specific setup
106cb1125b0b197278894896af14fe8ecdf7b92756dJens Axboe
107cb1125b0b197278894896af14fe8ecdf7b92756dJens Axboe