Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mesa
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
virgl-es
mesa
Commits
9409043c
Commit
9409043c
authored
Feb 27, 2008
by
José Fonseca
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
scons: Move common code to a separate file.
parent
67099cd7
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
131 additions
and
106 deletions
+131
-106
SConstruct
SConstruct
+18
-106
common.py
common.py
+113
-0
No files found.
SConstruct
View file @
9409043c
#######################################################################
# Top-level SConstruct
import
os
import
os.path
import
sys
import
platform
as
_platform
#######################################################################
# Configuration options
#
# For example, invoke scons as
#
...
...
@@ -29,33 +20,21 @@ import platform as _platform
# to get the full list of options. See scons manpage for more info.
#
platform_map
=
{
'linux2'
:
'linux'
,
'win32'
:
'winddk'
,
}
default_platform
=
sys
.
platform
default_platform
=
platform_map
.
get
(
default_platform
,
default_platform
)
machine_map
=
{
'x86'
:
'x86'
,
'i386'
:
'x86'
,
'i486'
:
'x86'
,
'i586'
:
'x86'
,
'i686'
:
'x86'
,
'x86_64'
:
'x86_64'
,
}
if
'PROCESSOR_ARCHITECTURE'
in
os
.
environ
:
default_machine
=
os
.
environ
[
'PROCESSOR_ARCHITECTURE'
]
else
:
default_machine
=
_platform
.
machine
()
default_machine
=
machine_map
.
get
(
default_machine
,
'generic'
)
import
os
import
os.path
import
sys
import
common
#######################################################################
# Configuration options
if
default_platform
in
(
'linux'
,
'freebsd'
,
'darwin'
):
if
common
.
default_platform
in
(
'linux'
,
'freebsd'
,
'darwin'
):
default_statetrackers
=
'mesa'
default_drivers
=
'softpipe,failover,i915simple,i965simple'
default_winsys
=
'xlib'
default_dri
=
'yes'
elif
default_platform
in
(
'winddk'
,):
elif
common
.
default_platform
in
(
'winddk'
,):
default_statetrackers
=
'none'
default_drivers
=
'softpipe,i915simple'
default_winsys
=
'none'
...
...
@@ -65,36 +44,13 @@ else:
default_winsys
=
'all'
default_dri
=
'no'
# TODO: auto-detect defaults
opts
=
Options
(
'config.py'
)
opts
.
Add
(
BoolOption
(
'debug'
,
'build debug version'
,
'no'
))
opts
.
Add
(
EnumOption
(
'machine'
,
'use machine-specific assembly code'
,
default_machine
,
allowed_values
=
(
'generic'
,
'x86'
,
'x86_64'
)))
opts
.
Add
(
EnumOption
(
'platform'
,
'target platform'
,
default_platform
,
allowed_values
=
(
'linux'
,
'cell'
,
'winddk'
)))
opts
=
common
.
Options
()
opts
.
Add
(
ListOption
(
'statetrackers'
,
'state_trackers to build'
,
default_statetrackers
,
[
'mesa'
,
],
))
[
'mesa'
]))
opts
.
Add
(
ListOption
(
'drivers'
,
'pipe drivers to build'
,
default_drivers
,
[
'softpipe'
,
'failover'
,
'i915simple'
,
'i965simple'
,
'cell'
,
],
))
[
'softpipe'
,
'failover'
,
'i915simple'
,
'i965simple'
,
'cell'
]))
opts
.
Add
(
ListOption
(
'winsys'
,
'winsys drivers to build'
,
default_winsys
,
[
'xlib'
,
'intel'
,
],
))
opts
.
Add
(
BoolOption
(
'llvm'
,
'use LLVM'
,
'no'
))
opts
.
Add
(
BoolOption
(
'dri'
,
'build DRI drivers'
,
default_dri
))
[
'xlib'
,
'intel'
]))
env
=
Environment
(
options
=
opts
,
...
...
@@ -264,64 +220,20 @@ if platform not in ('winddk',):
'Xfixes'
,
])
Export
(
'env'
)
#######################################################################
# Convenience Library Builder
# based on the stock StaticLibrary and SharedLibrary builders
def
createConvenienceLibBuilder
(
env
):
"""This is a utility function that creates the ConvenienceLibrary
Builder in an Environment if it is not there already.
If it is already there, we return the existing one.
"""
try
:
convenience_lib
=
env
[
'BUILDERS'
][
'ConvenienceLibrary'
]
except
KeyError
:
action_list
=
[
Action
(
"$ARCOM"
,
"$ARCOMSTR"
)
]
if
env
.
Detect
(
'ranlib'
):
ranlib_action
=
Action
(
"$RANLIBCOM"
,
"$RANLIBCOMSTR"
)
action_list
.
append
(
ranlib_action
)
# Convenience library support
common
.
createConvenienceLibBuilder
(
env
)
convenience_lib
=
Builder
(
action
=
action_list
,
emitter
=
'$LIBEMITTER'
,
prefix
=
'$LIBPREFIX'
,
suffix
=
'$LIBSUFFIX'
,
src_suffix
=
'$SHOBJSUFFIX'
,
src_builder
=
'SharedObject'
)
env
[
'BUILDERS'
][
'ConvenienceLibrary'
]
=
convenience_lib
env
[
'BUILDERS'
][
'Library'
]
=
convenience_lib
return
convenience_lib
createConvenienceLibBuilder
(
env
)
Export
(
'env'
)
#######################################################################
# Invoke SConscripts
# Put build output in a separate dir, which depends on the current configuration
# See also http://www.scons.org/wiki/AdvancedBuildExample
build_topdir
=
'build'
build_subdir
=
platform
if
dri
:
build_subdir
+=
"-dri"
if
llvm
:
build_subdir
+=
"-llvm"
if
env
[
'machine'
]
!=
'generic'
:
build_subdir
+=
'-'
+
env
[
'machine'
]
if
debug
:
build_subdir
+=
"-debug"
build_dir
=
os
.
path
.
join
(
build_topdir
,
build_subdir
)
# TODO: Build several variants at the same time?
# http://www.scons.org/wiki/SimultaneousVariantBuilds
SConscript
(
'src/SConscript'
,
build_dir
=
build_dir
,
build_dir
=
common
.
make_build_dir
(
env
)
,
duplicate
=
0
# http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
)
common.py
0 → 100644
View file @
9409043c
#######################################################################
# Common SCons code
import
os
import
os.path
import
sys
import
platform
as
_platform
#######################################################################
# Defaults
_platform_map
=
{
'linux2'
:
'linux'
,
'win32'
:
'winddk'
,
}
default_platform
=
sys
.
platform
default_platform
=
_platform_map
.
get
(
default_platform
,
default_platform
)
_machine_map
=
{
'x86'
:
'x86'
,
'i386'
:
'x86'
,
'i486'
:
'x86'
,
'i586'
:
'x86'
,
'i686'
:
'x86'
,
'x86_64'
:
'x86_64'
,
}
if
'PROCESSOR_ARCHITECTURE'
in
os
.
environ
:
default_machine
=
os
.
environ
[
'PROCESSOR_ARCHITECTURE'
]
else
:
default_machine
=
_platform
.
machine
()
default_machine
=
_machine_map
.
get
(
default_machine
,
'generic'
)
if
default_platform
in
(
'linux'
,
'freebsd'
,
'darwin'
):
default_dri
=
'yes'
elif
default_platform
in
(
'winddk'
,):
default_dri
=
'no'
else
:
default_dri
=
'no'
#######################################################################
# Common options
def
Options
():
from
SCons.Options
import
Options
from
SCons.Options.BoolOption
import
BoolOption
from
SCons.Options.EnumOption
import
EnumOption
opts
=
Options
(
'config.py'
)
opts
.
Add
(
BoolOption
(
'debug'
,
'build debug version'
,
'no'
))
opts
.
Add
(
EnumOption
(
'machine'
,
'use machine-specific assembly code'
,
default_machine
,
allowed_values
=
(
'generic'
,
'x86'
,
'x86_64'
)))
opts
.
Add
(
EnumOption
(
'platform'
,
'target platform'
,
default_platform
,
allowed_values
=
(
'linux'
,
'cell'
,
'winddk'
)))
opts
.
Add
(
BoolOption
(
'llvm'
,
'use LLVM'
,
'no'
))
opts
.
Add
(
BoolOption
(
'dri'
,
'build DRI drivers'
,
default_dri
))
return
opts
#######################################################################
# Convenience Library Builder
# based on the stock StaticLibrary and SharedLibrary builders
import
SCons.Action
import
SCons.Builder
def
createConvenienceLibBuilder
(
env
):
"""This is a utility function that creates the ConvenienceLibrary
Builder in an Environment if it is not there already.
If it is already there, we return the existing one.
"""
try
:
convenience_lib
=
env
[
'BUILDERS'
][
'ConvenienceLibrary'
]
except
KeyError
:
action_list
=
[
SCons
.
Action
.
Action
(
"$ARCOM"
,
"$ARCOMSTR"
)
]
if
env
.
Detect
(
'ranlib'
):
ranlib_action
=
SCons
.
Action
.
Action
(
"$RANLIBCOM"
,
"$RANLIBCOMSTR"
)
action_list
.
append
(
ranlib_action
)
convenience_lib
=
SCons
.
Builder
.
Builder
(
action
=
action_list
,
emitter
=
'$LIBEMITTER'
,
prefix
=
'$LIBPREFIX'
,
suffix
=
'$LIBSUFFIX'
,
src_suffix
=
'$SHOBJSUFFIX'
,
src_builder
=
'SharedObject'
)
env
[
'BUILDERS'
][
'ConvenienceLibrary'
]
=
convenience_lib
env
[
'BUILDERS'
][
'Library'
]
=
convenience_lib
return
convenience_lib
#######################################################################
# Build
def
make_build_dir
(
env
):
# Put build output in a separate dir, which depends on the current configuration
# See also http://www.scons.org/wiki/AdvancedBuildExample
build_topdir
=
'build'
build_subdir
=
env
[
'platform'
]
if
env
[
'dri'
]:
build_subdir
+=
"-dri"
if
env
[
'llvm'
]:
build_subdir
+=
"-llvm"
if
env
[
'machine'
]
!=
'generic'
:
build_subdir
+=
'-'
+
env
[
'machine'
]
if
env
[
'debug'
]:
build_subdir
+=
"-debug"
build_dir
=
os
.
path
.
join
(
build_topdir
,
build_subdir
)
return
build_dir
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment