## -*-makefile-*-
## BeOS-specific setup
## Copyright (c) 2003-2003, International Business Machines Corporation and
## others. All Rights Reserved.
##
## $Id: mh-beos,v 1.2 2003/08/08 23:53:43 grhoten-oss Exp $
## Original author: Andrew Bachmann

## Commands to generate dependency files
GEN_DEPS.c=  $(CC) -E -MM $(DEFS) $(CPPFLAGS)
GEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS)

# Safe optimizations
#OPTIMIZATIONS= -fdefault-inline -fdefer-pop -fforce-mem -fforce-addr \
#	  -finline -finline-functions \
#	  -fkeep-inline-functions -fkeep-static-consts -fbranch-count-reg \
#	  -ffunction-cse -fstrength-reduce -fthread-jumps -fcse-follow-jumps \
#	  -fcse-skip-blocks -frerun-cse-after-loop -frerun-loop-opt \
#	  -fexpensive-optimizations -foptimize-register-move -fregmove \
#	  -fschedule-insns -fschedule-insns2 -ffloat-store -funroll-loops \
#	  -fmove-all-movables -freduce-all-givs -fpeephole \
#	  -funroll-all-loops -ffunction-sections -fdata-sections

# BeOS gccs (geekgadgets + 2.95.3) have this old bug: 
# after this:          const wchar_t x[] = L"foo";
# x[2] is "optimized" into: (wchar_t)((char *)x)[2] (== 0)
#
# see also: http://gcc.gnu.org/ml/gcc-patches/2000-09/msg00454.html
#
# Unfortunately this behavior isn't controlled by a flag so we can't
# use any O optimizations at all. (the behavior kicks in at -O1)

# Optimizations aren't currently defined in the mh files.
# So Don't override any flags set by the user or runConfigureICU.
#CFLAGS += $(OPTIMIZATIONS)
#CXXFLAGS += $(OPTIMIZATIONS)

# Use -nostart instead of -shared
SHLIB.c=      $(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -nostart
SHLIB.cc=     $(CXX) $(DEFS) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -nostart

## Flags for position independent code
SHAREDLIBCFLAGS = -fPIC
SHAREDLIBCXXFLAGS = -fPIC
SHAREDLIBCPPFLAGS = -DPIC

## Additional flags when building libraries and with threads
LIBCPPFLAGS = 
THREADSCPPFLAGS = 

## Compiler switch to embed a runtime search path
LD_RPATH=	
LD_RPATH_PRE = -Wl,-rpath,

## Compiler switch to embed a library name
LD_SONAME = -Wl,-soname -Wl,$(MIDDLE_SO_TARGET)

## Shared object suffix
SO = so
## Non-shared intermediate object suffix
STATIC_O = ao

## Compilation rules
%.$(STATIC_O): $(srcdir)/%.c
	$(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $<
%.o: $(srcdir)/%.c
	$(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $<

%.$(STATIC_O): $(srcdir)/%.cpp
	$(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
%.o: $(srcdir)/%.cpp
	$(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<


## Dependency rules
%.d: $(srcdir)/%.c
	@echo "generating dependency information for $<"
	@$(SHELL) -ec '$(GEN_DEPS.c) $< \
		| sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \
		[ -s $@ ] || rm -f $@'

%.d: $(srcdir)/%.cpp
	@echo "generating dependency information for $<"
	@$(SHELL) -ec '$(GEN_DEPS.cc) $< \
		| sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \
		[ -s $@ ] || rm -f $@'

## Versioned libraries rules

%.$(SO).$(SO_TARGET_VERSION_MAJOR): %.$(SO).$(SO_TARGET_VERSION)
	$(RM) $@ && ln -s ${<F} $@
%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
	$(RM) $@ && ln -s ${*F}.$(SO).$(SO_TARGET_VERSION) $@

##  Bind internal references

# LDflags that pkgdata will use
BIR_LDFLAGS= -Wl,-Bsymbolic

# CPPflags for genccode/gencmn
BIR_CPPFLAGS= -DU_HAVE_BIND_INTERNAL_REFERENCES

# Dependencies [i.e. map files] for the final library
BIR_DEPS=

# Use LIBRARY_PATH instead of LD_LIBRARY_PATH
LDLIBRARYPATH_ENVVAR= LIBRARY_PATH

## End BeOS-specific setup

