| 
      
      
      From: <ale...@us...> - 2012-06-22 11:39:37
      
     | 
| Revision: 54659
          http://firebird.svn.sourceforge.net/firebird/?rev=54659&view=rev
Author:   alexpeshkoff
Date:     2012-06-22 11:39:24 +0000 (Fri, 22 Jun 2012)
Log Message:
-----------
Cross-build support + android port: work in progress, currently can build fbclient for android
Modified Paths:
--------------
    firebird/trunk/builds/posix/Makefile.in
    firebird/trunk/builds/posix/Makefile.in.examples
    firebird/trunk/builds/posix/Makefile.in.plugins_examples
    firebird/trunk/builds/posix/make.defaults
    firebird/trunk/builds/posix/make.rules
    firebird/trunk/builds/posix/make.shared.variables
    firebird/trunk/configure.in
    firebird/trunk/extern/libtommath/makefile
    firebird/trunk/src/common/ThreadStart.cpp
    firebird/trunk/src/common/classes/alloc.cpp
    firebird/trunk/src/common/classes/alloc.h
    firebird/trunk/src/common/classes/rwlock.h
    firebird/trunk/src/common/common.h
    firebird/trunk/src/common/isc_f_proto.h
    firebird/trunk/src/common/isc_file.cpp
    firebird/trunk/src/common/isc_sync.cpp
    firebird/trunk/src/common/os/posix/SyncSignals.cpp
    firebird/trunk/src/common/os/posix/os_utils.cpp
    firebird/trunk/src/include/fb_exception.h
    firebird/trunk/src/yvalve/perf.h
Added Paths:
-----------
    firebird/trunk/builds/posix/make.android.arme
    firebird/trunk/src/include/cross/
    firebird/trunk/src/include/cross/android.arme
Modified: firebird/trunk/builds/posix/Makefile.in
===================================================================
--- firebird/trunk/builds/posix/Makefile.in	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/builds/posix/Makefile.in	2012-06-22 11:39:24 UTC (rev 54659)
@@ -36,7 +36,11 @@
 ROOT=$(shell cd ..; pwd)
 
 include     make.defaults
+ifeq ($(CROSS_OUT), Y)
+include     make.crossPlatform
+else
 include     make.platform
+endif
 include     make.rules
 include     make.shared.variables
 
@@ -48,18 +52,24 @@
   DefaultTarget := Release
 endif
 
-.PHONY:	master_process firebird Debug Release extern
+ifeq ($(IsCross), Y)
+  Process := cross_process
+else
+  Process := master_process
+endif
 
+.PHONY:	master_process cross_process firebird Debug Release extern
+
 all:	firebird
 
 firebird:
-	$(MAKE) TARGET=$(DefaultTarget) master_process
+	$(MAKE) TARGET=$(DefaultTarget) $(Process)
 
 Release:
-	$(MAKE) TARGET=Release master_process
+	$(MAKE) TARGET=Release $(Process)
 
 Debug:
-	$(MAKE) TARGET=Debug master_process
+	$(MAKE) TARGET=Debug $(Process)
 
 
 #----------------------------------------------------------------------------
@@ -102,14 +112,28 @@
 
 export_lists: $(ALLVERS)
 
+#___________________________________________________________________________
+# LibTomMath - used by cross-builds
+#
 
+.PHONY:	tommath
+TOMLIB=$(LIB)/libtommath.a
+TOM_Objs=$(addprefix ../extern/libtommath/,$(call doObjects,$(call dirFiles,../extern/libtommath)))
+
+tommath:	$(TOMLIB)
+
+$(TOMLIB):	$(TOM_Objs)
+	-$(RM) $@
+	$(STATICLIB_LINK) $@ $^
+
 #___________________________________________________________________________
 # main build target for both debug abd release builds
 #
 
-.PHONY:	boot yvalve engine fbintl gpre utilities plugins rest codes examples
+.PHONY:	cross1 cross2 boot yvalve engine fbintl gpre utilities plugins rest codes examples
 
 master_process:
+	ln -sf $(SRC_ROOT)/include/gen/autoconfig.auto $(SRC_ROOT)/include/gen/autoconfig.h
 	$(MAKE) updateBuildNum
 	$(MAKE) export_lists
 	$(MAKE) extern
@@ -133,6 +157,35 @@
 	$(MAKE) examples
 	$(MAKE) rest
 
+
+cross_process:
+	$(MAKE) TARGET=Native cross1
+	$(MAKE) CROSS_OUT=Y cross2
+
+cross1:
+	ln -sf $(SRC_ROOT)/include/gen/autoconfig.auto $(SRC_ROOT)/include/gen/autoconfig.h
+	$(MAKE) updateBuildNum
+	$(MAKE) export_lists
+	$(MAKE) extern
+	$(MAKE) boot
+	$(MAKE) yvalve
+	$(MAKE) engine
+	$(MAKE) fbintl
+	$(MAKE) gbak isql gfix
+# Now having ready such useful tools as gbak and isql, we may restore / create
+# required databases and switch to full-featured gpre
+	$(MAKE) gpre
+# Pay attention - after build force gpre_current to point to gpre 
+# even if gpre itself was not rebuilt
+	-$(RM) $(GPRE_CURRENT)
+	(cd $(BIN); $(LN) $(notdir $(RUN_GPRE)) $(notdir $(GPRE_CURRENT)))
+
+cross2:
+	ln -sf $(SRC_ROOT)/include/cross/$(CROSS_CONFIG) $(SRC_ROOT)/include/gen/autoconfig.h
+	$(MAKE) tommath
+	$(MAKE) yvalve
+
+
 #___________________________________________________________________________
 # static library - various common code, used in different FB projects
 #
@@ -219,10 +272,10 @@
 	-$(RM) $@
 	$(LN) $^ $@
 
-metadata.fdb:	$(ISQL) $(SRC_ROOT)/dbs/metadata.sql
+metadata.fdb:	$(RUN_ISQL) $(SRC_ROOT)/dbs/metadata.sql
 	-$(RM) $@
-	$(ISQL) -q -i $(SRC_ROOT)/dbs/metadata.sql
-	$(GFIX) -mode read_only $@
+	$(RUN_ISQL) -q -i $(SRC_ROOT)/dbs/metadata.sql
+	$(RUN_GFIX) -mode read_only $@
 	$(CHMOD) 0444 $@
 
 $(HELP_FDB):	help.fdb
@@ -231,7 +284,7 @@
 	$(CHMOD) 0444 $@
 
 help.fdb:	$(BLD_ROOT)/misc/help.gbak
-	$(GBAK) -MODE read_only -R $< $@
+	$(RUN_GBAK) -MODE read_only -R $< $@
 	$(CHMOD) 0444 $@
 
 $(SECURITY_FDB):	security.fdb
@@ -241,18 +294,18 @@
 security.fdb:	$(SRC_ROOT)/dbs/security.sql
 	-$(RM) $@
 	-$(RM) $(SECURITY_TMP)
-	echo create database \'$(SECURITY_TMP)\'\; | $(ISQL)
-	$(GFIX) -write async $(SECURITY_TMP)
-	$(ISQL) -i $^ $(SECURITY_TMP)
+	echo create database \'$(SECURITY_TMP)\'\; | $(RUN_ISQL)
+	$(RUN_GFIX) -write async $(SECURITY_TMP)
+	$(RUN_ISQL) -i $^ $(SECURITY_TMP)
 	$(CHMOD) a=rw $(SECURITY_TMP)
 	$(CP) $(SECURITY_TMP) $@
-	$(GFIX) -write sync $@
+	$(RUN_GFIX) -write sync $@
 
 msg.timestamp:	$(MSG_FILES)
 	-$(RM) msg.fdb
-	echo create database \'msg.fdb\'\; | $(ISQL)
-	$(GFIX) -write async msg.fdb
-	for sql in $(MSG_FILES); do (echo $$sql; $(ISQL) -i $$sql msg.fdb) || exit; done
+	echo create database \'msg.fdb\'\; | $(RUN_ISQL)
+	$(RUN_GFIX) -write async msg.fdb
+	for sql in $(MSG_FILES); do (echo $$sql; $(RUN_ISQL) -i $$sql msg.fdb) || exit; done
 	$(TOUCH) $@
 
 
@@ -264,7 +317,7 @@
 
 udfs:	ibudf fbudf
 
-UDF = $(FIREBIRD)/UDF
+UDF = $(FB_BUILD)/UDF
 IBUDF_SO = $(UDF)/ib_udf.$(SHRLIB_EXT)
 FBUDF_SO = $(UDF)/fbudf.$(SHRLIB_EXT)
 
@@ -439,8 +492,8 @@
 
 message_file:	$(FIREBIRD_MSG)
 
-$(FIREBIRD_MSG):	$(BUILD_FILE) msg.timestamp
-	$(BUILD_FILE) -d msg.fdb -f $@
+$(FIREBIRD_MSG):	$(RUN_BUILD_FILE) msg.timestamp
+	$(RUN_BUILD_FILE) -d msg.fdb -f $@
 	$(CHMOD_6) $@
 
 $(BUILD_FILE):	$(BUILD_Objects) $(COMMON_LIB)
@@ -454,7 +507,7 @@
 # software - mainly they are just flattened out to make the view simpler
 # from an external point of view.
 
-INCLUDE_DEST=   $(FIREBIRD)/include
+INCLUDE_DEST=   $(FB_BUILD)/include
 
 include_generic: $(INCLUDE_DEST)/ib_util.h  \
                  $(INCLUDE_DEST)/ibase.h
@@ -521,7 +574,7 @@
 
 
 clean: clean_objects clean_dependancies clean_extern_objects clean_build \
-		clean_yacc_gen clean_gpre_gen clean_dbs clean_examples
+		clean_yacc_gen clean_gpre_gen clean_dbs clean_examples clean_tommath
 
 ifeq ($(EDITLINE_FLG),Y)
 ifeq ($(STD_EDITLINE),false)
@@ -558,6 +611,9 @@
 #clean_icu:
 #	-$(MAKE) -C $(ROOT)/extern/icu/source clean
 
+clean_tommath:
+	-$(MAKE) -C $(ROOT)/extern/libtommath clean
+
 clean_objects:
 	$(RM) `find $(TMP_ROOT)/ -type f -name '*.o' -print`
 	$(RM) `find $(TMP_ROOT)/ -type f -name '*.a' -print`
Modified: firebird/trunk/builds/posix/Makefile.in.examples
===================================================================
--- firebird/trunk/builds/posix/Makefile.in.examples	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/builds/posix/Makefile.in.examples	2012-06-22 11:39:24 UTC (rev 54659)
@@ -33,7 +33,7 @@
 # Add the install include directory to the search path since the
 # examples need to build using those headers values.
 
-CFLAGS := $(CFLAGS) -I$(FIREBIRD)/include
+CFLAGS := $(CFLAGS) -I$(FB_BUILD)/include
 
 
 include     $(ROOT)/gen/make.defaults
Modified: firebird/trunk/builds/posix/Makefile.in.plugins_examples
===================================================================
--- firebird/trunk/builds/posix/Makefile.in.plugins_examples	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/builds/posix/Makefile.in.plugins_examples	2012-06-22 11:39:24 UTC (rev 54659)
@@ -36,7 +36,7 @@
   DefaultTarget := Release
 endif
 
-CPPFLAGS+= -I$(FIREBIRD)/include
+CPPFLAGS+= -I$(FB_BUILD)/include
 
 include     $(ROOT)/gen/make.defaults
 include     $(ROOT)/gen/make.platform
Added: firebird/trunk/builds/posix/make.android.arme
===================================================================
--- firebird/trunk/builds/posix/make.android.arme	                        (rev 0)
+++ firebird/trunk/builds/posix/make.android.arme	2012-06-22 11:39:24 UTC (rev 54659)
@@ -0,0 +1,44 @@
+
+ifeq ($(NDK),)
+$(error Must export NDK location before building for Android)
+endif
+NDK_ROOT:=$(NDK)
+#NDK_LOG:=1
+
+include $(NDK)/build/core/init.mk
+
+CROSS_PLATFORM:=$(NDK)/platforms/android-9/arch-arm
+CROSS_PREFIX:=$(NDK)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-
+
+CXX:=$(CROSS_PREFIX)g++
+CC:=$(CROSS_PREFIX)gcc
+AR:=$(CROSS_PREFIX)ar
+AS:=$(CROSS_PREFIX)as
+LD:=$(CROSS_PREFIX)ld
+NM:=$(CROSS_PREFIX)nm
+OBJCOPY:=$(CROSS_PREFIX)objcopy
+OBJDUMP:=$(CROSS_PREFIX)objdump
+RANLIB:=$(CROSS_PREFIX)ranlib
+STRIP:=$(CROSS_PREFIX)strip
+
+COMMON_FLAGS=-ggdb -DFB_SEND_FLAGS=MSG_NOSIGNAL -DLINUX -DANDROID -DARM -pipe -MMD -fPIC -fmessage-length=0 \
+			 -I$(ROOT)/extern/libtommath --sysroot=$(CROSS_PLATFORM) \
+			 -I$(ROOT)/extern/icu/source/common -I$(ROOT)/extern/icu/source/i18n
+OPTIMIZE_FLAGS=-O3 -fno-omit-frame-pointer
+WARN_FLAGS=-Wall -Wno-switch -Wno-parentheses -Wno-unknown-pragmas -Wno-unused-variable
+
+PROD_FLAGS=$(COMMON_FLAGS) $(OPTIMIZE_FLAGS)
+#DEV_FLAGS=-DUSE_VALGRIND $(COMMON_FLAGS) $(WARN_FLAGS)
+DEV_FLAGS=$(COMMON_FLAGS) $(WARN_FLAGS)
+
+CROSS_CONFIG=android.arme
+
+LDFLAGS += --sysroot=$(CROSS_PLATFORM) -L$(NDK)/sources/cxx-stl/gnu-libstdc++/libs/armeabi
+DroidLibs := -lm -ldl -lsupc++
+
+LINK_LIBS = $(DroidLibs)
+STATICLINK_LIBS = $(DroidLibs)
+SO_LINK_LIBS = $(DroidLibs)
+
+EXE_LINK_OPTIONS= $(LDFLAGS) $(UNDEF_FLAGS) $(LIB_PATH_OPTS) $(LINK_EMPTY_SYMBOLS)
+LIB_LINK_OPTIONS= $(LDFLAGS) -shared
Property changes on: firebird/trunk/builds/posix/make.android.arme
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
Modified: firebird/trunk/builds/posix/make.defaults
===================================================================
--- firebird/trunk/builds/posix/make.defaults	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/builds/posix/make.defaults	2012-06-22 11:39:24 UTC (rev 54659)
@@ -47,7 +47,14 @@
 LNG_ROOT=$(ROOT)/lang_helpers
 EXA_ROOT=$(ROOT)/examples
 
-FIREBIRD=$(GEN_ROOT)/$(TARGET)/firebird
+IsCross=@IS_CROSS@
+
+FB_BUILD=$(GEN_ROOT)/$(TARGET)/firebird
+ifeq ($(IsCross), Y)
+  FIREBIRD=$(GEN_ROOT)/Native/firebird
+else
+  FIREBIRD=$(FB_BUILD)
+endif
 FIREBIRD_LOCK=$(FIREBIRD)
 
 export FIREBIRD
@@ -57,9 +64,10 @@
 FIREBIRD_BOOT_BUILD=1
 export FIREBIRD_BOOT_BUILD
 
-LIB=$(FIREBIRD)/lib
-BIN=$(FIREBIRD)/bin
-PLUGINS=$(FIREBIRD)/plugins
+LIB=$(FB_BUILD)/lib
+BIN=$(FB_BUILD)/bin
+PLUGINS=$(FB_BUILD)/plugins
+RBIN=$(FIREBIRD)/bin
 
 # This picks up the current directory and maps it to the equivalent module
 # in the src and gen area.
@@ -143,7 +151,7 @@
 QUIET_ECHO=		@echo
 CD=			cd
 CAT=			cat
-AR=			ar @AR_OPTIONS@ crsu
+AR=			ar @AR_OPTIONS@
 LN=			@LN_S@
 RANLIB=			@RANLIB@
 BTYACC=$(ROOT)/extern/btyacc/btyacc
@@ -155,7 +163,7 @@
 # LINKER COMMANDS
 
 LIB_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS)
-STATICLIB_LINK = ar cruvs
+STATICLIB_LINK = $(AR) crus
 EXE_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS)
 STATICEXE_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS)
 
@@ -226,7 +234,7 @@
 # confuses the dynamic load process.  So we only have the .$(SHRLIB_EXT) file
 # MOD 28-July-2002
 
-LIBFBINTL_SO = $(FIREBIRD)/intl/$(LIB_PREFIX)fbintl.$(SHRLIB_EXT)
+LIBFBINTL_SO = $(FB_BUILD)/intl/$(LIB_PREFIX)fbintl.$(SHRLIB_EXT)
 
 ifeq ($(EDITLINE_FLG),Y)
   ifeq ($(STD_EDITLINE), true)
@@ -323,7 +331,7 @@
 COMMON_LIB	= $(OBJ)/common.a
 
 # From utilities
-CREATE_DB	= $(BIN)/create_db$(EXEC_EXT)
+CREATE_DB	= $(RBIN)/create_db$(EXEC_EXT)
 GDS_DROP	= $(BIN)/gds_drop$(EXEC_EXT)
 FBSVCMGR	= $(BIN)/fbsvcmgr$(EXEC_EXT)
 FBTRACEMGR	= $(BIN)/fbtracemgr$(EXEC_EXT)
@@ -332,8 +340,8 @@
 LOCKPRINT	= $(BIN)/fb_lock_print$(EXEC_EXT)
 GSEC		= $(BIN)/gsec$(EXEC_EXT)
 GFIX		= $(BIN)/gfix$(EXEC_EXT)
+RUN_GFIX	= $(RBIN)/gfix$(EXEC_EXT)
 GDS_REBUILD	= $(BIN)/gds_rebuild$(EXEC_EXT)
-GDS_RELAY	= $(BIN)/gds_relay$(EXEC_EXT)
 GDS_INSTALL	= $(BIN)/gds_install$(EXEC_EXT)
 GDS_INSTALL	= $(BIN)/gds_install_service$(EXEC_EXT)
 FBGUARD		= $(BIN)/fbguard$(EXEC_EXT)
@@ -349,25 +357,25 @@
 
 # From isql
 ISQL            = $(BIN)/isql$(EXEC_EXT)
-ISQL_STATIC     = $(BIN)/isql_static$(EXEC_EXT)
-MUISQL          = $(BIN)/muisql$(EXEC_EXT)
+RUN_ISQL        = $(RBIN)/isql$(EXEC_EXT)
 
 # From burp
-GBAK_STATIC     = $(BIN)/gbak_static$(EXEC_EXT)
 GBAK            = $(BIN)/gbak$(EXEC_EXT)
+RUN_GBAK        = $(RBIN)/gbak$(EXEC_EXT)
 GSPLIT          = $(BIN)/gsplit$(EXEC_EXT)
 
 # From gpre
 # (gpre current is a link to one of the others)
-GPRE_BOOT       = $(BIN)/gpre_boot$(EXEC_EXT)
-GPRE_STATIC     = $(BIN)/gpre_static$(EXEC_EXT)
+GPRE_BOOT       = $(RBIN)/gpre_boot$(EXEC_EXT)
 GPRE            = $(BIN)/gpre$(EXEC_EXT)
-GPRE_CURRENT    = $(BIN)/gpre_current$(EXEC_EXT)
+RUN_GPRE        = $(RBIN)/gpre$(EXEC_EXT)
+GPRE_CURRENT    = $(RBIN)/gpre_current$(EXEC_EXT)
 
 
 # From msgs
 CHECK_MESSAGES  = $(BIN)/check_messages$(EXEC_EXT)
 BUILD_FILE      = $(BIN)/build_file$(EXEC_EXT)
+RUN_BUILD_FILE  = $(RBIN)/build_file$(EXEC_EXT)
 FIREBIRD_MSG    = $(FIREBIRD)/firebird.msg
 
 ENTER_MESSAGES  = $(BIN)/enter_messages$(EXEC_EXT)
Modified: firebird/trunk/builds/posix/make.rules
===================================================================
--- firebird/trunk/builds/posix/make.rules	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/builds/posix/make.rules	2012-06-22 11:39:24 UTC (rev 54659)
@@ -86,6 +86,9 @@
 
 .SUFFIXES: .lo .o .cpp .c
 
+%.o: %.c
+	$(CC) $(WCFLAGS) -c $(firstword $<) -o $@
+
 $(OBJ)/%.o: $(SRC_ROOT)/%.c
 	$(CC) $(WCFLAGS) -c $(firstword $<) -o $@
 	@sed $(INLINE_EDIT_SED) -e "1,2s/:/: \$$(wildcard/" -e "\$$s/\(.*\)/\\1)/" $(patsubst %.o,%.d,$@)
Modified: firebird/trunk/builds/posix/make.shared.variables
===================================================================
--- firebird/trunk/builds/posix/make.shared.variables	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/builds/posix/make.shared.variables	2012-06-22 11:39:24 UTC (rev 54659)
@@ -1,5 +1,6 @@
 # Helper functions
-makeObjects= $(addprefix $(OBJ)/$(1)/,$(patsubst %.y,%.o,$(patsubst %.epp,%.o,$(patsubst %.c,%.o,$(2:.cpp=.o)))))
+doObjects= $(patsubst %.y,%.o,$(patsubst %.epp,%.o,$(patsubst %.c,%.o,$(1:.cpp=.o))))
+makeObjects= $(addprefix $(OBJ)/$(1)/,$(call doObjects,$2))
 dirFiles= $(notdir $(wildcard ../src/$(1)/*.cpp)) $(notdir $(wildcard ../src/$(1)/*.c)) \
 		  $(notdir $(wildcard ../src/$(1)/*.epp)) $(notdir $(wildcard ../src/$(1)/*.y))
 dirInPath= $(call makeObjects,$(1),$(call dirFiles,$(1)))
Modified: firebird/trunk/configure.in
===================================================================
--- firebird/trunk/configure.in	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/configure.in	2012-06-22 11:39:24 UTC (rev 54659)
@@ -12,7 +12,7 @@
          [m4_define([AC_CONFIG_MACRO_DIR], [])])
 AC_CONFIG_MACRO_DIR(m4)
 
-AC_CONFIG_HEADER(src/include/gen/autoconfig.h:builds/make.new/config/config.h.in)
+AC_CONFIG_HEADER(src/include/gen/autoconfig.auto:builds/make.new/config/config.h.in)
 
 dnl XE_APPEND(value, varname)
 define([XE_APPEND],[[$2]="$[$2] [$1]"])
@@ -448,6 +448,14 @@
    esac])
 AC_SUBST(DEVEL_FLG)
 
+CROSS=
+IS_CROSS=N
+AC_ARG_WITH(cross-build,
+  [  --with-cross-build     build for platform different from current one],
+  [CROSS=${withval}
+   IS_CROSS=Y])
+AC_SUBST(IS_CROSS)
+
 dnl Avoid dumb '-g -O2' autoconf's default
 dnl Debugging information and optimization flags should be set in prefix.$platform file
 dnl Should be replaced with AC_PROG_GCC_DEFAULT_FLAGS() when available
@@ -663,6 +671,7 @@
 AC_CHECK_HEADERS(poll.h)
 AC_CHECK_HEADERS(langinfo.h)
 AC_CHECK_HEADERS(iconv.h)
+AC_CHECK_HEADERS(libio.h)
 
 dnl check for ICU presence
 AC_CHECK_HEADER(unicode/ucnv.h,,AC_MSG_ERROR(ICU support not found - please install development ICU package))
@@ -813,6 +822,9 @@
 AC_CHECK_FUNCS(pthread_mutexattr_setprotocol)
 AC_CHECK_FUNCS(pthread_mutexattr_setrobust_np)
 AC_CHECK_FUNCS(pthread_mutex_consistent_np)
+AC_CHECK_FUNCS(pthread_rwlockattr_setkind_np)
+AC_CHECK_FUNCS(pthread_cancel)
+AC_CHECK_FUNCS(sigset)
 
 dnl Semaphores
 if test "$ac_cv_header_semaphore_h" = "yes"; then
@@ -1036,8 +1048,16 @@
 
 AC_DEFINE_UNQUOTED(FB_PREFIX, $(if test "x$prefix" = "xNONE" ; then echo \"$ac_default_prefix\"; else echo \"$prefix\"; fi), [Installation path prefix])
 
+FB_TARGETS="Debug Release"
+test "x$CROSS" = "x" || FB_TARGETS="$FB_TARGETS Native"
+
 AC_CONFIG_COMMANDS(,,[
-for fb_tgt in Debug Release; do
+
+FB_TARGETS="$FB_TARGETS"
+for fb_tgt in \$FB_TARGETS; do
+
+	echo "Creating \$fb_tgt directories"
+
 dnl ### GEN ### directories for databases and misc
 	mkdir -p gen/\$fb_tgt/examples
 	mkdir -p gen/\$fb_tgt/refDatabases
@@ -1062,8 +1082,7 @@
 	mkdir -p gen/\$fb_tgt/firebird/help
 	mkdir -p gen/\$fb_tgt/firebird/plugins/udr
 
-dnl #### TEMP ######### directories for generated .cpp, .o and .d
-dnl # by module name
+dnl ### TEMP ### directories for generated .cpp, .o and .d by module name
 	for src_dir in `cd src; ls -R -1 * | grep : | tr -d : | tr "\n" " "; cd ..`; do
     	mkdir -p temp/\$fb_tgt/\$src_dir
 	done
@@ -1071,8 +1090,8 @@
 	src/misc/writeBuildNum.sh createMakeVersion gen/Make.Version
 
 dnl # sql files for UDF declarations
-	for sql_file in src/extlib/ib_udf.sql src/extlib/fbudf/fbudf.sql src/extlib/ib_udf2.sql; do
-		cp \$sql_file gen/\$fb_tgt/firebird/UDF
+	for sql_file in ib_udf.sql fbudf/fbudf.sql ib_udf2.sql; do
+		cp src/extlib/\$sql_file gen/\$fb_tgt/firebird/UDF
 	done
 done
 
@@ -1090,17 +1109,21 @@
 
 dnl common files for all posix hosts
 dnl TODO: fix "arch-specific/linux/" paths for common posix scripts with SVN
+for fb_tgt in $FB_TARGETS; do
 AC_CONFIG_FILES([
-gen/Debug/firebird/firebird.conf:builds/install/misc/firebird.conf.in
-gen/Release/firebird/firebird.conf:builds/install/misc/firebird.conf.in
-gen/Debug/firebird/aliases.conf:builds/install/misc/aliases.conf.in
-gen/Release/firebird/aliases.conf:builds/install/misc/aliases.conf.in
-gen/Debug/firebird/fbtrace.conf:src/utilities/ntrace/fbtrace.conf
-gen/Release/firebird/fbtrace.conf:src/utilities/ntrace/fbtrace.conf
-gen/Debug/firebird/intl/fbintl.conf:builds/install/misc/fbintl.conf
-gen/Release/firebird/intl/fbintl.conf:builds/install/misc/fbintl.conf
-gen/Debug/firebird/plugins.conf:builds/install/misc/plugins.conf
-gen/Release/firebird/plugins.conf:builds/install/misc/plugins.conf
+gen/$fb_tgt/firebird/firebird.conf:builds/install/misc/firebird.conf.in
+gen/$fb_tgt/firebird/aliases.conf:builds/install/misc/aliases.conf.in
+gen/$fb_tgt/firebird/fbtrace.conf:src/utilities/ntrace/fbtrace.conf
+gen/$fb_tgt/firebird/intl/fbintl.conf:builds/install/misc/fbintl.conf
+gen/$fb_tgt/firebird/plugins.conf:builds/install/misc/plugins.conf
+])
+done
+
+if test "x$CROSS" != "x"; then
+AC_CONFIG_FILES([gen/make.crossPlatform:builds/posix/make.$CROSS])
+fi
+
+AC_CONFIG_FILES([
 gen/Release/firebird/bin/fb_config:builds/install/misc/fb_config.in
 gen/Release/firebird/bin/posixLibrary.sh:builds/install/misc/posixLibrary.sh.in
 gen/Release/firebird/bin/changeRunUser.sh:builds/install/misc/changeRunUser.sh.in
@@ -1113,12 +1136,11 @@
 gen/Release/firebird/bin/postuninstall.sh:builds/install/arch-specific/linux/misc/postuninstall.sh.in
 gen/Release/firebird/bin/taruninstall.sh:builds/install/arch-specific/linux/misc/taruninstall.sh.in
 gen/Release/firebird/bin/tarMainUninstall.sh:builds/install/arch-specific/linux/misc/tarMainUninstall.sh.in
-gen/vers.sh:builds/posix/vers.sh.in
 gen/Release/firebird/bin/changeDBAPassword.sh:builds/install/misc/changeDBAPassword.sh.in
 gen/Release/firebird/bin/changeMultiConnectMode.sh:builds/install/misc/changeMultiConnectMode.sh.in
 gen/Release/firebird/bin/createAliasDB.sh:builds/install/misc/createAliasDB.sh.in
-],
-[chmod a+x gen/install/scripts/*.sh gen/install/*sh 2>/dev/null])
+gen/vers.sh:builds/posix/vers.sh.in
+])
 
 dnl: Platform Specific Files
 
Modified: firebird/trunk/extern/libtommath/makefile
===================================================================
--- firebird/trunk/extern/libtommath/makefile	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/extern/libtommath/makefile	2012-06-22 11:39:24 UTC (rev 54659)
@@ -168,8 +168,6 @@
 	rm -f *.bat *.pdf *.o *.a *.obj *.lib *.exe *.dll etclib/*.o demo/demo.o test ltmtest mpitest mtest/mtest mtest/mtest.exe \
         *.idx *.toc *.log *.aux *.dvi *.lof *.ind *.ilg *.ps *.log *.s mpi.c *.da *.dyn *.dpi tommath.tex `find . -type f | grep [~] | xargs` *.lo *.la
 	rm -rf .libs
-	cd etc ; MAKE=${MAKE} ${MAKE} clean
-	cd pics ; MAKE=${MAKE} ${MAKE} clean
 
 #zipup the project (take that!)
 no_oops: clean
Modified: firebird/trunk/src/common/ThreadStart.cpp
===================================================================
--- firebird/trunk/src/common/ThreadStart.cpp	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/src/common/ThreadStart.cpp	2012-06-22 11:39:24 UTC (rev 54659)
@@ -165,10 +165,12 @@
 
 	if (p_handle)
 	{
+#ifdef HAVE_PTHREAD_CANCEL
 		int dummy;		// We do not want to know old cancel type
 		state = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &dummy);
 		if (state)
 			 Firebird::system_call_failed::raise("pthread_setcanceltype", state);
+#endif
 		*p_handle = thread;
 	}
 }
@@ -182,10 +184,12 @@
 
 void Thread::kill(Handle& thread)
 {
+#ifdef HAVE_PTHREAD_CANCEL
 	int state = pthread_cancel(thread);
 	if (state)
 		Firebird::system_call_failed::raise("pthread_cancel", state);
 	waitForCompletion(thread);
+#endif
 }
 #endif /* USE_POSIX_THREADS */
 
Modified: firebird/trunk/src/common/classes/alloc.cpp
===================================================================
--- firebird/trunk/src/common/classes/alloc.cpp	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/src/common/classes/alloc.cpp	2012-06-22 11:39:24 UTC (rev 54659)
@@ -284,7 +284,7 @@
 	stats->increment_usage(sav_used_memory);
 }
 
-MemBlock* MemoryPool::alloc(const size_t length) throw (std::bad_alloc)
+MemBlock* MemoryPool::alloc(const size_t length) throw (OOM_EXCEPTION)
 {
 	MutexLockGuard guard(mutex, "MemoryPool::alloc");
 
@@ -473,7 +473,7 @@
 #ifdef DEBUG_GDS_ALLOC
 	, const char* fileName, int line
 #endif
-) throw (std::bad_alloc)
+) throw (OOM_EXCEPTION)
 {
 	size_t length = ROUNDUP(size + VALGRIND_REDZONE, roundingSize) + OFFSET(MemBlock*, body) + GUARD_BYTES;
 	MemBlock* memory = alloc(length);
@@ -669,7 +669,7 @@
 #endif
 }
 
-void MemoryPool::memoryIsExhausted(void) throw (std::bad_alloc)
+void MemoryPool::memoryIsExhausted(void) throw (OOM_EXCEPTION)
 {
 	Firebird::BadAlloc::raise();
 }
@@ -785,7 +785,7 @@
 
 }
 
-void* MemoryPool::allocRaw(size_t size) throw (std::bad_alloc)
+void* MemoryPool::allocRaw(size_t size) throw (OOM_EXCEPTION)
 {
 #ifndef USE_VALGRIND
 	if (size == DEFAULT_ALLOCATION)
@@ -976,7 +976,7 @@
 #ifdef DEBUG_GDS_ALLOC
 	, const char* fileName, int line
 #endif
-) throw (std::bad_alloc)
+) throw (OOM_EXCEPTION)
 {
 	void *block = allocate((int) size
 #ifdef DEBUG_GDS_ALLOC
Modified: firebird/trunk/src/common/classes/alloc.h
===================================================================
--- firebird/trunk/src/common/classes/alloc.h	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/src/common/classes/alloc.h	2012-06-22 11:39:24 UTC (rev 54659)
@@ -75,7 +75,13 @@
 #define VALGRIND_REDZONE 8
 #endif
 
+#ifdef USE_SYSTEM_NEW
+#define OOM_EXCEPTION std::bad_alloc
+#else
+#define OOM_EXCEPTION Firebird::BadAlloc
+#endif
 
+
 namespace Firebird {
 
 // Alignment for all memory blocks. Sizes of memory blocks in headers are measured in this units
@@ -275,7 +281,7 @@
 	AtomicCounter used_memory, mapped_memory;
 
 protected:
-	MemBlock* alloc(const size_t length) throw (std::bad_alloc);
+	MemBlock* alloc(const size_t length) throw (OOM_EXCEPTION);
 	void releaseBlock(MemBlock *block) throw ();
 
 public:
@@ -283,16 +289,16 @@
 #ifdef DEBUG_GDS_ALLOC
 		, const char* fileName = NULL, int line = 0
 #endif
-	) throw (std::bad_alloc);
+	) throw (OOM_EXCEPTION);
 
 protected:
 	void corrupt(const char* text) throw ();
 
 private:
-	virtual void memoryIsExhausted(void) throw (std::bad_alloc);
+	virtual void memoryIsExhausted(void) throw (OOM_EXCEPTION);
 	void remove(MemFreeBlock* block) throw ();
 	void insert(MemFreeBlock* block) throw ();
-	void* allocRaw(size_t length) throw (std::bad_alloc);
+	void* allocRaw(size_t length) throw (OOM_EXCEPTION);
 	void validateFreeList(void) throw ();
 	void validateBigBlock(MemBigObject* block) throw ();
 	static void release(void* block) throw ();
@@ -312,14 +318,14 @@
 #ifdef DEBUG_GDS_ALLOC
 		, const char* fileName, int line
 #endif
-				) throw (std::bad_alloc);
+				) throw (OOM_EXCEPTION);
 	static void deallocate(void* block) throw ();
 	void validate(void) throw ();
 
 #ifdef LIBC_CALLS_NEW
-	static void* globalAlloc(size_t s) throw (std::bad_alloc);
+	static void* globalAlloc(size_t s) throw (OOM_EXCEPTION);
 #else
-	static void* globalAlloc(size_t s) throw (std::bad_alloc)
+	static void* globalAlloc(size_t s) throw (OOM_EXCEPTION)
 	{
 		return defaultMemoryManager->allocate(s
 #ifdef DEBUG_GDS_ALLOC
@@ -442,11 +448,11 @@
 using Firebird::MemoryPool;
 
 // Global versions of operators new and delete
-inline void* operator new(size_t s) throw (std::bad_alloc)
+inline void* operator new(size_t s) throw (OOM_EXCEPTION)
 {
 	return MemoryPool::globalAlloc(s);
 }
-inline void* operator new[](size_t s) throw (std::bad_alloc)
+inline void* operator new[](size_t s) throw (OOM_EXCEPTION)
 {
 	return MemoryPool::globalAlloc(s);
 }
@@ -461,22 +467,22 @@
 }
 
 #ifdef DEBUG_GDS_ALLOC
-inline void* operator new(size_t s, Firebird::MemoryPool& pool, const char* file, int line)
+inline void* operator new(size_t s, Firebird::MemoryPool& pool, const char* file, int line) throw (OOM_EXCEPTION)
 {
 	return pool.allocate(s, file, line);
 }
-inline void* operator new[](size_t s, Firebird::MemoryPool& pool, const char* file, int line)
+inline void* operator new[](size_t s, Firebird::MemoryPool& pool, const char* file, int line) throw (OOM_EXCEPTION)
 {
 	return pool.allocate(s, file, line);
 }
 #define FB_NEW(pool) new(pool, __FILE__, __LINE__)
 #define FB_NEW_RPT(pool, count) new(pool, count, __FILE__, __LINE__)
 #else
-inline void* operator new(size_t s, Firebird::MemoryPool& pool)
+inline void* operator new(size_t s, Firebird::MemoryPool& pool) throw (OOM_EXCEPTION)
 {
 	return pool.allocate(s);
 }
-inline void* operator new[](size_t s, Firebird::MemoryPool& pool)
+inline void* operator new[](size_t s, Firebird::MemoryPool& pool) throw (OOM_EXCEPTION)
 {
 	return pool.allocate(s);
 }
@@ -484,6 +490,21 @@
 #define FB_NEW_RPT(pool, count) new(pool, count)
 #endif
 
+#ifndef USE_SYSTEM_NEW
+// We must define placement operators NEW & DELETE ourself
+inline void* operator new(size_t s, void* place) throw ()
+{
+	return place;
+}
+inline void* operator new[](size_t s, void* place) throw ()
+{
+	return place;
+}
+inline void operator delete(void*, void*) throw()
+{ }
+inline void operator delete[](void*, void*) throw()
+{ }
+#endif
 
 namespace Firebird
 {
Modified: firebird/trunk/src/common/classes/rwlock.h
===================================================================
--- firebird/trunk/src/common/classes/rwlock.h	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/src/common/classes/rwlock.h	2012-06-22 11:39:24 UTC (rev 54659)
@@ -191,7 +191,7 @@
 
 	void init()
 	{
-#if defined(LINUX) && !defined(USE_VALGRIND)
+#if defined(LINUX) && !defined(USE_VALGRIND) && defined(HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP)
 		pthread_rwlockattr_t attr;
 		if (pthread_rwlockattr_init(&attr))
 			system_call_failed::raise("pthread_rwlockattr_init");
Modified: firebird/trunk/src/common/common.h
===================================================================
--- firebird/trunk/src/common/common.h	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/src/common/common.h	2012-06-22 11:39:24 UTC (rev 54659)
@@ -291,7 +291,16 @@
 #endif /* NETBSD */
 
 
+/*****************************************************
+* Android
+*****************************************************/
+#ifdef ANDROID
 
+#define NO_NFS					/* no MTAB_OPEN or MTAB_CLOSE in isc_file.c */
+
+#endif /* NETBSD */
+
+
 /*****************************************************
  * SUN platforms--the 386i is obsolete
 *****************************************************/
Modified: firebird/trunk/src/common/isc_f_proto.h
===================================================================
--- firebird/trunk/src/common/isc_f_proto.h	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/src/common/isc_f_proto.h	2012-06-22 11:39:24 UTC (rev 54659)
@@ -28,6 +28,7 @@
 #define JRD_ISC_FILE_PROTO_H
 
 #include "../common/classes/fb_string.h"
+#include "../common/common.h"
 
 enum iscProtocol {ISC_PROTOCOL_LOCAL, ISC_PROTOCOL_TCPIP, ISC_PROTOCOL_WLAN};
 
Modified: firebird/trunk/src/common/isc_file.cpp
===================================================================
--- firebird/trunk/src/common/isc_file.cpp	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/src/common/isc_file.cpp	2012-06-22 11:39:24 UTC (rev 54659)
@@ -184,7 +184,7 @@
 #endif //NO_NFS
 } // anonymous namespace
 
-#if (!defined NO_NFS || defined FREEBSD || defined NETBSD)
+#ifndef WIN_NT
 static void expand_filename2(tstring&, bool);
 #endif
 
@@ -523,7 +523,7 @@
 }
 
 
-#if (!defined NO_NFS || defined FREEBSD || defined NETBSD)
+#ifndef WIN_NT
 bool ISC_expand_filename(tstring& buff, bool expand_mounts)
 {
 /**************************************
@@ -1027,7 +1027,7 @@
 #endif	// WIN_NT
 
 
-#if (!defined NO_NFS || defined FREEBSD || defined NETBSD)
+#ifndef WIN_NT
 static void expand_filename2(tstring& buff, bool expand_mounts)
 {
 /**************************************
Modified: firebird/trunk/src/common/isc_sync.cpp
===================================================================
--- firebird/trunk/src/common/isc_sync.cpp	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/src/common/isc_sync.cpp	2012-06-22 11:39:24 UTC (rev 54659)
@@ -105,14 +105,6 @@
 //#define SIGURG		SIGINT
 //#endif
 
-#ifndef HAVE_SEMUN
-union semun
-{
-	int val;
-	struct semid_ds *buf;
-	ushort *array;
-};
-#endif
 #endif // UNIX
 
 #ifdef HAVE_SYS_PARAM_H
@@ -292,6 +284,15 @@
 // Uncomment to trace details of event_init/fini calls
 //#define DEB_EVNT
 
+#ifndef HAVE_SEMUN
+union semun
+{
+	int val;
+	struct semid_ds *buf;
+	ushort *array;
+};
+#endif
+
 static SLONG	create_semaphores(Arg::StatusVector&, SLONG, int);
 
 namespace {
Modified: firebird/trunk/src/common/os/posix/SyncSignals.cpp
===================================================================
--- firebird/trunk/src/common/os/posix/SyncSignals.cpp	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/src/common/os/posix/SyncSignals.cpp	2012-06-22 11:39:24 UTC (rev 54659)
@@ -76,6 +76,17 @@
 
 	} // extern "C"
 
+#ifndef HAVE_SIGSET
+	typedef void HandlerType(int);
+	void sigset(int signum, HandlerType* handler)
+	{
+		struct sigaction act;
+		memset(&act, 0, sizeof act);
+		act.sa_handler = handler;
+		sigaction(signum, &act, NULL);
+	}
+#endif
+
 } // anonymous namespace
 
 namespace Firebird {
Modified: firebird/trunk/src/common/os/posix/os_utils.cpp
===================================================================
--- firebird/trunk/src/common/os/posix/os_utils.cpp	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/src/common/os/posix/os_utils.cpp	2012-06-22 11:39:24 UTC (rev 54659)
@@ -156,6 +156,13 @@
 	changeFileRights(pathname, 0770);
 }
 
+#ifndef S_IREAD
+#define S_IREAD S_IRUSR
+#endif
+#ifndef S_IWRITE
+#define S_IWRITE S_IWUSR
+#endif
+
 // open (or create if missing) and set appropriate access rights
 int openCreateSharedFile(const char* pathname, int flags)
 {
Added: firebird/trunk/src/include/cross/android.arme
===================================================================
--- firebird/trunk/src/include/cross/android.arme	                        (rev 0)
+++ firebird/trunk/src/include/cross/android.arme	2012-06-22 11:39:24 UTC (rev 54659)
@@ -0,0 +1,665 @@
+/* src/include/gen/autoconfig.h.  Generated from config.h.in by configure.  */
+/* builds/make.new/config/config.h.in.  Generated from configure.in by autoheader.  */
+
+/* log file name within log dir (firebird.log) */
+#define FB_LOGFILENAME "firebird.log"
+
+/* Define if building universal (internal helper macro) */
+/* #undef AC_APPLE_UNIVERSAL_BUILD */
+
+/* Define this if OS is AIX */
+/* #undef AIX */
+
+/* Define this if CPU is Alpha */
+/* #undef ALPHA */
+
+/* Define this if CPU is amd64 */
+/* #undef AMD64 */
+
+/* Include pthread support for binary relocation? */
+/* #undef BR_PTHREAD */
+
+/* Define this if paths are case sensitive */
+#define CASE_SENSITIVITY false
+
+/* Define this if OS is DARWIN */
+/* #undef DARWIN */
+
+/* Use binary relocation? */
+/* #undef ENABLE_BINRELOC */
+
+/* Alignment of long */
+#define FB_ALIGNMENT 8
+
+/* executables DIR (PREFIX/bin) */
+#define FB_BINDIR ""
+
+/* config files DIR (PREFIX) */
+#define FB_CONFDIR ""
+
+/* documentation root DIR (PREFIX/doc) */
+#define FB_DOCDIR ""
+
+/* Alignment of double */
+#define FB_DOUBLE_ALIGN 8
+
+/* guardian lock DIR (PREFIX) */
+#define FB_GUARDDIR ""
+
+/* QLI help DIR (PREFIX/help) */
+#define FB_HELPDIR ""
+
+/* C/C++ header files DIR (PREFIX/include) */
+#define FB_INCDIR ""
+
+/* international DIR (PREFIX/intl) */
+#define FB_INTLDIR ""
+
+/* Local IPC name */
+#define FB_IPC_NAME "FirebirdIPI"
+
+/* object code libraries DIR (PREFIX/lib) */
+#define FB_LIBDIR ""
+
+/* log files DIR (PREFIX) */
+#define FB_LOGDIR ""
+
+/* misc DIR (PREFIX/misc) */
+#define FB_MISCDIR ""
+
+/* message files DIR (PREFIX) */
+#define FB_MSGDIR ""
+
+/* Wnet pipe name */
+#define FB_PIPE_NAME "interbas"
+
+/* plugins DIR (PREFIX) */
+#define FB_PLUGDIR ""
+
+/* Installation path prefix */
+#define FB_PREFIX "/opt/firebird"
+
+/* examples database DIR (PREFIX/examples/empbuild) */
+#define FB_SAMPLEDBDIR ""
+
+/* examples DIR (PREFIX/examples) */
+#define FB_SAMPLEDIR ""
+
+/* system admin executables DIR (PREFIX/bin) */
+#define FB_SBINDIR ""
+
+/* security database DIR (PREFIX) */
+#define FB_SECDBDIR ""
+
+/* Inet service name */
+#define FB_SERVICE_NAME "gds_db"
+
+/* Inet service port */
+#define FB_SERVICE_PORT 3050
+
+/* UDF DIR (PREFIX/UDF) */
+#define FB_UDFDIR ""
+
+/* Define this if OS is FreeBSD */
+/* #undef FREEBSD */
+
+/* Define this if getmntent needs second argument */
+/* #undef GETMNTENT_TAKES_TWO_ARGUMENTS */
+
+/* Define to 1 if the `getpgrp' function requires zero arguments. */
+#define GETPGRP_VOID 1
+
+/* Define this if gettimeofday accepts second (timezone) argument */
+#define GETTIMEOFDAY_RETURNS_TIMEZONE 1
+
+/* Define this if GPRE should support ADA */
+/* #undef GPRE_ADA */
+
+/* Define this if GPRE should support COBOL */
+/* #undef GPRE_COBOL */
+
+/* Define this if GPRE should support FORTRAN */
+/* #undef GPRE_FORTRAN */
+
+/* Define this if GPRE should support PASCAL */
+/* #undef GPRE_PASCAL */
+
+/* Define to 1 if you have the <aio.h> header file. */
+#define HAVE_AIO_H 1
+
+/* Define this if AO_compare_and_swap_full() is defined in atomic_ops.h */
+/* #undef HAVE_AO_COMPARE_AND_SWAP_FULL */
+
+/* Define to 1 if you have the <assert.h> header file. */
+#define HAVE_ASSERT_H 1
+
+/* Define to 1 if you have the <atomic.h> header file. */
+/* #undef HAVE_ATOMIC_H */
+
+/* Define to 1 if you have the <atomic_ops.h> header file. */
+/* #undef HAVE_ATOMIC_OPS_H */
+
+/* Define to 1 if the system has the type `caddr_t'. */
+/* #undef HAVE_CADDR_T */
+
+/* Define to 1 if you have the <crypt.h> header file. */
+#define HAVE_CRYPT_H 1
+
+/* Define to 1 if you have the <ctype.h> header file. */
+#define HAVE_CTYPE_H 1
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+   */
+#define HAVE_DIRENT_H 1
+
+/* Define to 1 if you have the `dirname' function. */
+#define HAVE_DIRNAME 1
+
+/* Define to 1 if you have the `dladdr' function. */
+#define HAVE_DLADDR 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define this if editline is in use */
+#define HAVE_EDITLINE_H 1
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if you have the `fchmod' function. */
+#define HAVE_FCHMOD 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `fdatasync' function. */
+#define HAVE_FDATASYNC 1
+
+/* Define to 1 if you have the `fegetenv' function. */
+#define HAVE_FEGETENV 1
+
+/* Define to 1 if you have the <float.h> header file. */
+#define HAVE_FLOAT_H 1
+
+/* Define to 1 if you have the `flock' function. */
+#define HAVE_FLOCK 1
+
+/* Define to 1 if you have the `fork' function. */
+#define HAVE_FORK 1
+
+/* Define to 1 if you have the `fsync' function. */
+#define HAVE_FSYNC 1
+
+/* Define to 1 if you have the `getcwd' function. */
+#define HAVE_GETCWD 1
+
+/* Define to 1 if you have the `getmntent' function. */
+#define HAVE_GETMNTENT 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the `getrlimit' function. */
+#define HAVE_GETRLIMIT 1
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the `getwd' function. */
+#define HAVE_GETWD 1
+
+/* Define to 1 if you have the `gmtime_r' function. */
+#define HAVE_GMTIME_R 1
+
+/* Define to 1 if you have the <grp.h> header file. */
+#define HAVE_GRP_H 1
+
+/* Define this if INFINITY is defined in math.h */
+#define HAVE_INFINITY 1
+
+/* Define to 1 if you have the `initgroups' function. */
+#define HAVE_INITGROUPS 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `atomic_ops' library (-latomic_ops). */
+/* #undef HAVE_LIBATOMIC_OPS */
+
+/* Define to 1 if you have the <libio.h> header file. */
+/* #undef HAVE_LIBIO_H */
+
+/* Define to 1 if you have the `m' library (-lm). */
+#define HAVE_LIBM 1
+
+/* Define to 1 if you have the `pthread' library (-lpthread). */
+/* #undef HAVE_LIBPTHREAD */
+
+/* Define to 1 if you have the `sfio' library (-lsfio). */
+/* #undef HAVE_LIBSFIO */
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define to 1 if you have the `llrint' function. */
+#define HAVE_LLRINT 1
+
+/* Define to 1 if you have the <locale.h> header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if you have the `localtime_r' function. */
+#define HAVE_LOCALTIME_R 1
+
+/* Define to 1 if you have the <math.h> header file. */
+#define HAVE_MATH_H 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mkstemp' function. */
+#define HAVE_MKSTEMP 1
+
+/* Define to 1 if you have a working `mmap' system call. */
+#define HAVE_MMAP 1
+
+/* Define to 1 if you have the <mntent.h> header file. */
+#define HAVE_MNTENT_H 1
+
+/* Define to 1 if you have the <mnttab.h> header file. */
+/* #undef HAVE_MNTTAB_H */
+
+/* Define this if multi-threading should be supported */
+#define HAVE_MULTI_THREAD 1
+
+/* Define to 1 if you have the `nanosleep' function. */
+#define HAVE_NANOSLEEP 1
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_NDIR_H */
+
+/* Define to 1 if you have the <netconfig.h> header file. */
+/* #undef HAVE_NETCONFIG_H */
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the `poll' function. */
+#define HAVE_POLL 1
+
+/* Define to 1 if you have the <poll.h> header file. */
+#define HAVE_POLL_H 1
+
+/* Define this if posix_fadvise() is present on the platform */
+#define HAVE_POSIX_FADVISE 1
+
+/* Define to 1 if you have the `pread' function. */
+#define HAVE_PREAD 1
+
+/* Define if you have POSIX threads libraries and header files. */
+/* #undef HAVE_PTHREAD */
+
+/* Define to 1 if you have the <pthread.h> header file. */
+#define HAVE_PTHREAD_H 1
+
+/* Define to 1 if you have the `pthread_keycreate' function. */
+/* #undef HAVE_PTHREAD_KEYCREATE */
+
+/* Define to 1 if you have the `pthread_key_create' function. */
+#define HAVE_PTHREAD_KEY_CREATE 1
+
+/* Define to 1 if you have the `pthread_mutexattr_setprotocol' function. */
+#define HAVE_PTHREAD_MUTEXATTR_SETPROTOCOL 1
+
+/* Define to 1 if you have the `pthread_mutexattr_setrobust_np' function. */
+/* #undef HAVE_PTHREAD_MUTEXATTR_SETROBUST_NP */
+
+/* Define to 1 if you have the `pthread_mutex_consistent_np' function. */
+/* #undef HAVE_PTHREAD_MUTEX_CONSISTENT_NP */
+
+/* Define to 1 if you have the `pthread_rwlockattr_setkind_np' function. */
+/* #undef HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP */
+
+/* Define to 1 if you have the <pwd.h> header file. */
+#define HAVE_PWD_H 1
+
+/* Define to 1 if you have the `pwrite' function. */
+#define HAVE_PWRITE 1
+
+/* Define to 1 if you have the <rpc/rpc.h> header file. */
+#define HAVE_RPC_RPC_H 1
+
+/* Define to 1 if you have the <rpc/xdr.h> header file. */
+#define HAVE_RPC_XDR_H 1
+
+/* Define to 1 if you have the <semaphore.h> header file. */
+#define HAVE_SEMAPHORE_H 1
+
+/* Define to 1 if you have the `semtimedop' function. */
+#define HAVE_SEMTIMEDOP 1
+
+/* Define to 1 if the system has the type `semun'. */
+/* #undef HAVE_SEMUN */
+
+/* Define to 1 if you have the `sem_init' function. */
+#define HAVE_SEM_INIT 1
+
+/* Define to 1 if you have the `sem_timedwait' function. */
+#define HAVE_SEM_TIMEDWAIT 1
+
+/* Define to 1 if you have the `setitimer' function. */
+#define HAVE_SETITIMER 1
+
+/* Define to 1 if you have the <setjmp.h> header file. */
+#define HAVE_SETJMP_H 1
+
+/* Define to 1 if you have the `setmntent' function. */
+#define HAVE_SETMNTENT 1
+
+/* Define to 1 if you have the `setpgid' function. */
+#define HAVE_SETPGID 1
+
+/* Define to 1 if you have the `setrlimit' function. */
+#define HAVE_SETRLIMIT 1
+
+/* Define to 1 if you have the `sigaction' function. */
+#define HAVE_SIGACTION 1
+
+/* Define to 1 if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the <socket.h> header file. */
+/* #undef HAVE_SOCKET_H */
+
+/* Define to 1 if the system has the type `socklen_t'. */
+#define HAVE_SOCKLEN_T 1
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#define HAVE_STDARG_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror_r' function. */
+#define HAVE_STRERROR_R 1
+
+/* Define to 1 if you have the `stricmp' function. */
+/* #undef HAVE_STRICMP */
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strncasecmp' function. */
+#define HAVE_STRNCASECMP 1
+
+/* Define to 1 if you have the `strnicmp' function. */
+/* #undef HAVE_STRNICMP */
+
+/* Define this if struct dirent has d_type */
+#define HAVE_STRUCT_DIRENT_D_TYPE 1
+
+/* Define to 1 if the system has the type `struct xdr_ops'. */
+#define HAVE_STRUCT_XDR_OPS 1
+
+/* Define to 1 if the system has the type `struct XDR::xdr_ops'. */
+/* #undef HAVE_STRUCT_XDR__XDR_OPS */
+
+/* Define to 1 if you have the `swab' function. */
+#define HAVE_SWAB 1
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+   */
+/* #undef HAVE_SYS_DIR_H */
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#define HAVE_SYS_FILE_H 1
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/ipc.h> header file. */
+#define HAVE_SYS_IPC_H 1
+
+/* Define to 1 if you have the <sys/mntent.h> header file. */
+/* #undef HAVE_SYS_MNTENT_H */
+
+/* Define to 1 if you have the <sys/mnttab.h> header file. */
+/* #undef HAVE_SYS_MNTTAB_H */
+
+/* Define to 1 if you have the <sys/mount.h> header file. */
+#define HAVE_SYS_MOUNT_H 1
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+   */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#define HAVE_SYS_RESOURCE_H 1
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/sem.h> header file. */
+#define HAVE_SYS_SEM_H 1
+
+/* Define to 1 if you have the <sys/siginfo.h> header file. */
+/* #undef HAVE_SYS_SIGINFO_H */
+
+/* Define to 1 if you have the <sys/signal.h> header file. */
+/* #undef HAVE_SYS_SIGNAL_H */
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/sockio.h> header file. */
+/* #undef HAVE_SYS_SOCKIO_H */
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/timeb.h> header file. */
+#define HAVE_SYS_TIMEB_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define to 1 if you have the `tcgetattr' function. */
+#define HAVE_TCGETATTR 1
+
+/* Define to 1 if you have the <termios.h> header file. */
+#define HAVE_TERMIOS_H 1
+
+/* Define to 1 if you have the <termio.h> header file. */
+#define HAVE_TERMIO_H 1
+
+/* Define to 1 if you have the `time' function. */
+#define HAVE_TIME 1
+
+/* Define to 1 if you have the `times' function. */
+#define HAVE_TIMES 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the <utime.h> header file. */
+/* #undef HAVE_UTIME_H */
+
+/* Define to 1 if you have the <varargs.h> header file. */
+/* #undef HAVE_VARARGS_H */
+
+/* Define this if va_copy() is defined in stdarg.h */
+#define HAVE_VA_COPY 1
+
+/* Define to 1 if you have the `vfork' function. */
+#define HAVE_VFORK 1
+
+/* Define to 1 if you have the <vfork.h> header file. */
+/* #undef HAVE_VFORK_H */
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#define HAVE_VSNPRINTF 1
+
+/* Define to 1 if you have the <winsock2.h> header file. */
+/* #undef HAVE_WINSOCK2_H */
+
+/* Define to 1 if `fork' works. */
+#define HAVE_WORKING_FORK 1
+
+/* Define to 1 if `vfork' works. */
+#define HAVE_WORKING_VFORK 1
+
+/* Define to 1 if you have the file `AC_File'. */
+#define HAVE__PROC_SELF_EXE 1
+
+/* Define to 1 if you have the `_swab' function. */
+/* #undef HAVE__SWAB */
+
+/* Define it if compiler supports ISO syntax for thread-local storage */
+#define HAVE___THREAD 1
+
+/* Define this if CPU is HPPA */
+/* #undef HPPA */
+
+/* Define this if OS is HP-UX */
+/* #undef HPUX */
+
+/* Define this if OS is Linux */
+#define LINUX 1
+
+/* Define this if OS is NetBSD */
+/* #undef NETBSD */
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME ""
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING ""
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION ""
+
+/* Define to the necessary symbol if this constant uses a non-standard name on
+   your system. */
+/* #undef PTHREAD_CREATE_JOINABLE */
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* Define to 1 if the `setpgrp' function takes no argument. */
+#define SETPGRP_VOID 1
+
+/* Architecture is little-endian sh4 */
+/* #undef SH */
+
+/* Architecture is big-edian sh4 */
+/* #undef SHEB */
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* The size of `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 4
+
+/* The size of `void *', as computed by sizeof. */
+#define SIZEOF_VOID_P 4
+
+/* Define this if OS is Solaris Sparc */
+/* #undef SOLARIS */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define this if databases on raw devices should be supported */
+#define SUPPORT_RAW_DEVICES 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define this if OS is Windows NT */
+/* #undef WIN_NT */
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+/* #  undef WORDS_BIGENDIAN */
+# endif
+#endif
+
+/* Define this if sem_init() works on the platform */
+#define WORKING_SEM_INIT 1
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#define _FILE_OFFSET_BITS 64
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef gid_t */
+
+/* Define to `long int' if <sys/types.h> does not define. */
+/* #undef off_t */
+
+/* Define to `int' if <sys/types.h> does not define. */
+/* #undef pid_t */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* Define this if OS is Solarix x86 */
+/* #undef solx86 */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef uid_t */
+
+/* Define as `fork' if `vfork' does not work. */
+/* #undef vfork */
+
+/* Define to empty if the keyword `volatile' does not work. Warning: valid
+   code using `volatile' can become incorrect without. Disable with care. */
+/* #undef volatile */
+
+#ifdef GETTIMEOFDAY_RETURNS_TIMEZONE
+#define GETTIMEOFDAY(x) gettimeofday((x), (struct timezone *)0)
+#else
+#define GETTIMEOFDAY(x) gettimeofday((x))
+#endif
+
+#ifndef HAVE_SOCKLEN_T
+typedef int socklen_t;
+#endif
Property changes on: firebird/trunk/src/include/cross/android.arme
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
Modified: firebird/trunk/src/include/fb_exception.h
===================================================================
--- firebird/trunk/src/include/fb_exception.h	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/src/include/fb_exception.h	2012-06-22 11:39:24 UTC (rev 54659)
@@ -32,7 +32,15 @@
 
 #include <stddef.h>
 #include <string.h>
+
+#ifndef ANDROID
+#define USE_SYSTEM_NEW
+#endif
+
+#ifdef USE_SYSTEM_NEW
 #include <new>
+#endif
+
 #include "fb_types.h"
 #include "../common/StatusArg.h"
 #include "../common/thd.h"
@@ -64,13 +72,24 @@
 };
 
 // Used in MemoryPool
+#ifdef USE_SYSTEM_NEW
+
 class BadAlloc : public std::bad_alloc, public Exception
 {
 public:
+	BadAlloc() throw() : std::bad_alloc(), Exception() { }
+#else	// USE_SYSTEM_NEW
+
+class BadAlloc : public Exception
+{
+public:
+	BadAlloc() throw() : Exception() { }
+#endif	// USE_SYSTEM_NEW
+
+public:
 	virtual ISC_STATUS stuffException(IStatus* status_vector) const throw();
 	virtual const char* what() const throw();
 	static void raise();
-	BadAlloc() throw() : std::bad_alloc(), Exception() { }
 };
 
 // Main exception class in firebird
Modified: firebird/trunk/src/yvalve/perf.h
===================================================================
--- firebird/trunk/src/yvalve/perf.h	2012-06-22 04:39:21 UTC (rev 54658)
+++ firebird/trunk/src/yvalve/perf.h	2012-06-22 11:39:24 UTC (rev 54659)
@@ -31,7 +31,7 @@
 #ifndef JRD_PERF_H
 #define JRD_PERF_H
 
-#ifdef LINUX
+#ifdef HAVE_LIBIO_H
 #include <libio.h>
 #endif
 
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 |