Skip to content
Snippets Groups Projects
Commit 1aca3ff6 authored by Bryan O'Sullivan's avatar Bryan O'Sullivan
Browse files

Get 32-bit builds going on 64-bit Debian Etch.

Reviewed by Brad.
parent fa121d8e
No related branches found
No related tags found
No related merge requests found
......@@ -202,6 +202,14 @@ if (LINUX OR DARWIN)
set(CMAKE_C_FLAGS "${GCC_WARNINGS} ${CMAKE_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${GCC_CXX_WARNINGS} ${CMAKE_CXX_FLAGS}")
if (WORD_SIZE EQUAL 32)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
elseif (WORD_SIZE EQUAL 64)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64")
endif (WORD_SIZE EQUAL 32)
endif (LINUX OR DARWIN)
......
# -*- cmake -*-
include(Linking)
include(Prebuilt)
# We don't prebuild our own MySQL client library.
use_prebuilt_binary(mysql)
set(MYSQL_FIND_QUIETLY ON)
set(MYSQL_FIND_REQUIRED ON)
if (WINDOWS)
if (LINUX)
if (WORD_SIZE EQUAL 32 OR DEBIAN_VERSION STREQUAL "3.1")
set(MYSQL_LIBRARIES mysqlclient)
set(MYSQL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
else (WORD_SIZE EQUAL 32 OR DEBIAN_VERSION STREQUAL "3.1")
# Use the native MySQL library on a 64-bit system.
set(MYSQL_FIND_QUIETLY ON)
set(MYSQL_FIND_REQUIRED ON)
include(FindMySQL)
endif (WORD_SIZE EQUAL 32 OR DEBIAN_VERSION STREQUAL "3.1")
elseif (WINDOWS)
set(MYSQL_LIBRARIES mysqlclient)
set(MYSQL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
elseif (DARWIN)
......@@ -17,7 +23,4 @@ elseif (DARWIN)
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libmysqlclient.a
debug ${ARCH_PREBUILT_DIRS_DEBUG}/libmysqlclient.a
)
else (WINDOWS)
set(MYSQL_FIND_REQUIRED)
include(FindMySQL)
endif (WINDOWS)
endif (LINUX)
......@@ -45,12 +45,28 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(ARCH i686)
set(LL_ARCH ${ARCH}_win32)
set(LL_ARCH_DIR ${ARCH}-win32)
set(WORD_SIZE 32)
endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(LINUX ON BOOl FORCE)
execute_process(COMMAND uname -m COMMAND sed s/i.86/i686/
OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
# If someone has specified a word size, use that to determine the
# architecture. Otherwise, let the architecture specify the word size.
if (WORD_SIZE EQUAL 32)
set(ARCH i686)
elseif (WORD_SIZE EQUAL 64)
set(ARCH x86_64)
else (WORD_SIZE EQUAL 32)
execute_process(COMMAND uname -m COMMAND sed s/i.86/i686/
OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
if (ARCH STREQUAL x86_64)
set(WORD_SIZE 64)
else (ARCH STREQUAL x86_64)
set(WORD_SIZE 64)
endif (ARCH STREQUAL x86_64)
endif (WORD_SIZE EQUAL 32)
set(LL_ARCH ${ARCH}_linux)
set(LL_ARCH_DIR ${ARCH}-linux)
endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
......@@ -73,6 +89,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
endif (CMAKE_OSX_ARCHITECTURES MATCHES "i386" AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc")
set(LL_ARCH ${ARCH}_darwin)
set(LL_ARCH_DIR universal-darwin)
set(WORD_SIZE 32)
endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
# Default deploy grid
......
......@@ -79,6 +79,7 @@ class PlatformSetup(object):
project_name = 'SecondLife'
distcc = True
cmake_opts = []
word_size = 32
def __init__(self):
self.script_dir = os.path.realpath(
......@@ -120,6 +121,7 @@ def cmake_commandline(self, src_dir, build_dir, opts, simple):
opts=quote(opts),
standalone=self.standalone,
unattended=self.unattended,
word_size=self.word_size,
type=self.build_type.upper(),
)
#if simple:
......@@ -127,6 +129,7 @@ def cmake_commandline(self, src_dir, build_dir, opts, simple):
return ('cmake -DCMAKE_BUILD_TYPE:STRING=%(type)s '
'-DSTANDALONE:BOOL=%(standalone)s '
'-DUNATTENDED:BOOL=%(unattended)s '
'-DWORD_SIZE:STRING=%(word_size)s '
'-G %(generator)r %(opts)s %(dir)r' % args)
def run_cmake(self, args=[]):
......@@ -229,6 +232,8 @@ def arch(self):
cpu = 'i686'
elif cpu == 'Power Macintosh':
cpu = 'ppc'
elif cpu == 'x86_64' and self.word_size == 32:
cpu = 'i686'
return cpu
def run(self, command, name=None):
......@@ -263,8 +268,7 @@ def os(self):
return 'linux'
def build_dirs(self):
# Only build the server code if (a) we have it and (b) we're
# on 32-bit x86.
# Only build the server code if we have it.
platform_build = '%s-%s' % (self.platform(), self.build_type.lower())
if self.arch() == 'i686' and self.is_internal_tree():
......@@ -285,7 +289,8 @@ def cmake_commandline(self, src_dir, build_dir, opts, simple):
standalone=self.standalone,
unattended=self.unattended,
type=self.build_type.upper(),
project_name=self.project_name
project_name=self.project_name,
word_size=self.word_size,
)
if not self.is_internal_tree():
args.update({'cxx':'g++', 'server':'OFF', 'viewer':'ON'})
......@@ -311,6 +316,7 @@ def cmake_commandline(self, src_dir, build_dir, opts, simple):
'-G %(generator)r -DSERVER:BOOL=%(server)s '
'-DVIEWER:BOOL=%(viewer)s -DSTANDALONE:BOOL=%(standalone)s '
'-DUNATTENDED:BOOL=%(unattended)s '
'-DWORD_SIZE:STRING=%(word_size)s '
'-DROOT_PROJECT_NAME:STRING=%(project_name)s '
'%(opts)s %(dir)r')
% args)
......@@ -413,10 +419,11 @@ def cmake_commandline(self, src_dir, build_dir, opts, simple):
generator=self.generator,
opts=quote(opts),
standalone=self.standalone,
word_size=self.word_size,
unattended=self.unattended,
project_name=self.project_name,
universal='',
type=self.build_type.upper()
type=self.build_type.upper(),
)
if self.unattended == 'ON':
args['universal'] = '-DCMAKE_OSX_ARCHITECTURES:STRING=\'i386;ppc\''
......@@ -426,6 +433,7 @@ def cmake_commandline(self, src_dir, build_dir, opts, simple):
'-DCMAKE_BUILD_TYPE:STRING=%(type)s '
'-DSTANDALONE:BOOL=%(standalone)s '
'-DUNATTENDED:BOOL=%(unattended)s '
'-DWORD_SIZE:STRING=%(word_size)s '
'-DROOT_PROJECT_NAME:STRING=%(project_name)s '
'%(universal)s '
'%(opts)s %(dir)r' % args)
......@@ -505,13 +513,15 @@ def cmake_commandline(self, src_dir, build_dir, opts, simple):
opts=quote(opts),
standalone=self.standalone,
unattended=self.unattended,
project_name=self.project_name
project_name=self.project_name,
word_size=self.word_size,
)
#if simple:
# return 'cmake %(opts)s "%(dir)s"' % args
return ('cmake -G "%(generator)s" '
'-DSTANDALONE:BOOL=%(standalone)s '
'-DUNATTENDED:BOOL=%(unattended)s '
'-DWORD_SIZE:STRING=%(word_size)s '
'-DROOT_PROJECT_NAME:STRING=%(project_name)s '
'%(opts)s "%(dir)s"' % args)
......@@ -620,13 +630,15 @@ def cmake_commandline(self, src_dir, build_dir, opts, simple):
opts=quote(opts),
standalone=self.standalone,
unattended=self.unattended,
project_name=self.project_name
project_name=self.project_name,
word_size=self.word_size,
)
#if simple:
# return 'cmake %(opts)s "%(dir)s"' % args
return ('cmake -G "%(generator)s" '
'-DUNATTENDED:BOOl=%(unattended)s '
'-DSTANDALONE:BOOL=%(standalone)s '
'-DWORD_SIZE:STRING=%(word_size)s '
'-DROOT_PROJECT_NAME:STRING=%(project_name)s '
'%(opts)s "%(dir)s"' % args)
......@@ -647,6 +659,7 @@ def cmake_commandline(self, src_dir, build_dir, opts, simple):
--unattended build unattended, do not invoke any tools requiring
a human response
-t | --type=NAME build type ("Debug", "Release", or "RelWithDebInfo")
-m32 | -m64 build architecture (32-bit or 64-bit)
-N | --no-distcc disable use of distcc
-G | --generator=NAME generator name
Windows: VC71 or VS2003 (default), VC80 (VS2005) or
......@@ -698,6 +711,10 @@ def main(arguments):
setup.standalone = 'ON'
elif o in ('--unattended',):
setup.unattended = 'ON'
elif o in ('-m32',):
setup.word_size = 32
elif o in ('-m64',):
setup.word_size = 64
elif o in ('-t', '--type'):
try:
setup.build_type = setup.build_types[a.lower()]
......
......@@ -920,6 +920,13 @@ anguage Infrstructure (CLI) international standard</string>
<string>gpl</string>
<key>packages</key>
<map>
<key>linux</key>
<map>
<key>md5sum</key>
<string>cc86b4cc858655e23704d1168325d7b9</string>
<key>url</key>
<uri>scp:install-packages.lindenlab.com:/local/www/install-packages/doc/mysqlclient-linux-20090320.tar.bz2</uri>
</map>
<key>darwin</key>
<map>
<key>md5sum</key>
......
......@@ -779,7 +779,7 @@ def _get_platform():
# TODO -- someday when install.py accepts a platform of the form
# os/arch/compiler/compiler_version then we can replace the
# 'linux64' platform with 'linux/x86_64/gcc/4.1'
this_platform = 'linux64'
this_platform = 'linux'
return this_platform
def _getuser():
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment