diff --git a/builds/posix/prefix.linux_arm b/builds/posix/prefix.linux_arm new file mode 100644 index 0000000000..a11d4991e8 --- /dev/null +++ b/builds/posix/prefix.linux_arm @@ -0,0 +1,42 @@ +# The contents of this file are subject to the Interbase Public +# License Version 1.0 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy +# of the License at http://www.Inprise.com/IPL.html +# +# Software distributed under the License is distributed on an +# "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express +# or implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code was created by Inprise Corporation +# and its predecessors. Portions created by Inprise Corporation are +# Copyright (C) Inprise Corporation. +# +# All Rights Reserved. +# Contributor(s): ______________________________________. +# Start of file prefix.linux: $(VERSION) $(PLATFORM) +# +# $Id: prefix.linux_arm,v 1.2 2008-04-15 14:14:48 alexpeshkoff Exp $ +# +# 14 Apr 2008 Alan Barclay alan AT escribe.co.uk + + +#LD=@CXX@ + +#PROD_FLAGS=-ggdb -O3 -fno-omit-frame-pointer -DNDEBUG -DLINUX -pipe -MMD -fPIC +#DEV_FLAGS=-ggdb -DLINUX -DDEBUG_GDS_ALLOC -pipe -MMD -p -fPIC -Wall -Wno-switch + +PROD_FLAGS=-O3 -DNDEBUG -DLINUX -DARM -pipe -p -MMD -fPIC -fsigned-char -fmessage-length=0 +DEV_FLAGS=-ggdb -DLINUX -DARM -pipe -p -MMD -fPIC -Wall -fsigned-char -fmessage-length=0 + +OS_ServerFiles=inet_server.cpp + +#LIB_LINK_OPTIONS:=-shared +#LIB_LINK_RPATH:=-Wl,-rpath, +#LIB_LINK_SONAME:=-Wl,-soname, + +EMBED_UTIL_TARGETS=gstat gds_drop gds_relay gsec nbackup fb_lock_print fbsvcmgr +CLIENT_UTIL_TARGETS=gstat gds_drop gds_relay gsec nbackup fb_lock_print fbguard fbmgr_bin fbsvcmgr + +Physical_IO_Module=unix.cpp + diff --git a/configure.in b/configure.in index 0c079dbf0f..c87b150b34 100644 --- a/configure.in +++ b/configure.in @@ -135,6 +135,18 @@ dnl CPU_TYPE=x86_64 RPM64='()(64bit)' ;; + arm*-*-linux*) + MAKEFILE_PREFIX=linux_arm + INSTALL_PREFIX=linux + PLATFORM=LINUX + AC_DEFINE(LINUX, 1, [Define this if OS is Linux]) + LOCK_MANAGER_FLG=Y + EDITLINE_FLG=Y + SHRLIB_EXT=so + STD_EDITLINE=true + STD_ICU=true + ;; + sparc*-*-linux*) MAKEFILE_PREFIX=linux_sparc32 INSTALL_PREFIX=linux diff --git a/src/jrd/common.h b/src/jrd/common.h index d682a8fa95..9d051c3c1a 100644 --- a/src/jrd/common.h +++ b/src/jrd/common.h @@ -118,6 +118,10 @@ #define IMPLEMENTATION isc_info_db_impl_i386 /* 60 */ #endif /* i386 */ +#ifdef ARM +#define IMPLEMENTATION isc_info_db_impl_linux_arm +#endif /* ARM */ + #ifdef sparc #define IMPLEMENTATION isc_info_db_impl_linux_sparc /* 65 */ #define RISC_ALIGNMENT diff --git a/src/jrd/inf_pub.h b/src/jrd/inf_pub.h index a96cc610c4..427a5873c8 100644 --- a/src/jrd/inf_pub.h +++ b/src/jrd/inf_pub.h @@ -202,6 +202,8 @@ enum info_db_implementations isc_info_db_impl_linux_mips = 72, isc_info_db_impl_darwin_x64 = 73, + isc_info_db_impl_linux_arm = 75, + isc_info_db_impl_last_value /* Leave this LAST! */ }; diff --git a/src/jrd/pag.cpp b/src/jrd/pag.cpp index 5c6f6796b7..da1edede2d 100644 --- a/src/jrd/pag.cpp +++ b/src/jrd/pag.cpp @@ -154,8 +154,11 @@ static const int CLASS_DARWIN_I386 = 28; //Darwin/Intel static const int CLASS_LINUX_MIPSEL = 29; // LINUX/MIPSEL static const int CLASS_LINUX_MIPS = 30; // LINUX/MIPS static const int CLASS_DARWIN_X64 = 31; // Darwin/x64 +static const int CLASS_SOLARIS_AMD64 = 32; //Solaris/amd64 +static const int CLASS_LINUX_ARM = 33; // LINUX/ARM + static const int CLASS_MAX10 = CLASS_LINUX_AMD64; // This should not be changed, no new ports with ODS10 -static const int CLASS_MAX = CLASS_DARWIN_X64; +static const int CLASS_MAX = CLASS_LINUX_ARM; // ARCHITECTURE COMPATIBILITY CLASSES @@ -243,8 +246,10 @@ static const ArchitectureType archMatrix[CLASS_MAX + 1] = archBigEndian, // CLASS_LINUX_PPC archLittleEndian, // CLASS_DARWIN_I386 archLittleEndian, // CLASS_LINUX_MIPSEL - archBigEndian, // CLASS_LINUX_MIPS - archLittleEndian // CLASS_DARWIN_X64 + archBigEndian, // CLASS_LINUX_MIPS + archLittleEndian, // CLASS_DARWIN_X64 + archLittleEndian, // CLASS_SOLARIS_AMD64 + archLittleEndian // CLASS_LINUX_ARM }; #ifdef sun @@ -284,6 +289,8 @@ const SSHORT CLASS = CLASS_LINUX_I386; const SSHORT CLASS = CLASS_LINUX_SPARC; #elif defined(AMD64) const SSHORT CLASS = CLASS_LINUX_AMD64; +#elif defined(ARM) +const SSHORT CLASS = CLASS_LINUX_ARM; #elif defined(PPC) const SSHORT CLASS = CLASS_LINUX_PPC; #elif defined(MIPSEL) diff --git a/src/jrd/utl.cpp b/src/jrd/utl.cpp index 976ba05228..dc1b4b91c5 100644 --- a/src/jrd/utl.cpp +++ b/src/jrd/utl.cpp @@ -212,7 +212,9 @@ static const TEXT* const impl_implementation[] = { "Firebird/Darwin/Intel", /* 70 */ "Firebird/linux MIPSEL", /* 71 */ "Firebird/linux MIPS", /* 72 */ - "Firebird/Darwin/Intel64" /* 73 */ + "Firebird/Darwin/Intel64", /* 73 */ + "Firebird/sun/amd64", /* 74 */ + "Firebird/linux ARM" /* 75 */ }; diff --git a/src/remote/xdr.cpp b/src/remote/xdr.cpp index 7365af6a4c..41327f4f31 100644 --- a/src/remote/xdr.cpp +++ b/src/remote/xdr.cpp @@ -38,7 +38,7 @@ // The simpliest way to check it is to issue // "select abs(2.0/3.0) from rdb$database" from correct client // It will return big strange value in case of invalid define -#if defined(i386) || defined(I386) || defined(_M_IX86) || defined(AMD64) || defined(MIPSEL) || defined(DARWIN64) +#if defined(i386) || defined(I386) || defined(_M_IX86) || defined(AMD64) || defined(ARM) || defined(MIPSEL) || defined(DARWIN64) #define SWAP_DOUBLE #elif defined(sparc) || defined(PowerPC) || defined(PPC) || defined(__ppc__) || defined(HPUX) || defined(MIPS) #undef SWAP_DOUBLE