blob: 3a5e409036136b07b907bfa4fac47ed120abe8f1 [file] [log] [blame]
## acinclude.m4 -- Common autoconf macro definitions
#
# Copyright 2008 Sony Corporation of America
#
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this Library and associated documentation files (the
# "Library"), to deal in the Library without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Library, and to
# permit persons to whom the Library is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Library.
#
# If you modify the Library, you may copy and distribute your modified
# version of the Library in object code or as an executable provided
# that you also do one of the following:
#
# Accompany the modified version of the Library with the complete
# corresponding machine-readable source code for the modified version
# of the Library; or,
#
# Accompany the modified version of the Library with a written offer
# for a complete machine-readable copy of the corresponding source
# code of the modified version of the Library.
#
#
# THE LIBRARY IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# LIBRARY OR THE USE OR OTHER DEALINGS IN THE LIBRARY.
#
AC_DEFUN([AC_CONFIG_MARS_PLATFORM],[
AC_ARG_WITH([mars-platform],
[AS_HELP_STRING([--with-mars-platform=TYPE],
[specify mars platform TYPE (cell | spursengine)])],
[],
[AC_MSG_ERROR([missing option --with-mars-platform=])])
AS_CASE([${with_mars_platform}],
[cell],[],
[spursengine],[],
[AC_MSG_ERROR([invalid option --with-mars-platform=${with_mars_platform}])])
AM_CONDITIONAL([MARS_PLATFORM_CELL],
[test "x${with_mars_platform}" = "xcell"])
AM_CONDITIONAL([MARS_PLATFORM_SPURSENGINE],
[test "x${with_mars_platform}" = "xspursengine"])
AC_MSG_RESULT([using mars-platform ${with_mars_platform}])
]) # AC_CONFIG_MARS_PLATFORM
AC_DEFUN([AC_CONFIG_MARS_DISCRETE_SHARED_MEMORY],[
AC_ARG_ENABLE(
[discrete-shared-memory],
[AS_HELP_STRING([--enable-discrete-shared-memory],
[assume discrete shared memory between host and MPU
even if shared memory is identical to host memory,
for debugging purposes])])
AC_MSG_RESULT([using enable-discrete-shared-memory ${enable_discrete_shared_memory}])
]) # AC_CONFIG_MARS_DISCRETE_SHARED_MEMORY
AC_DEFUN([AC_CONFIG_MARS_COND_WAIT],[
AC_ARG_ENABLE([cond-wait],
[AS_HELP_STRING([--enable-cond-wait=TYPE],
[specify how to wait for conditions (busy | futex)])],
[],[AS_CASE([$with_mars_platform],
[cell],[enable_cond_wait=futex],
[enable_cond_wait=busy])])
AS_CASE([$enable_cond_wait],
[busy],[
AC_DEFINE([ENABLE_COND_WAIT_BUSY],[1],
[Define to 1 if busy loop is used to wait for conditions.])],
[futex],[
AS_CASE([$with_mars_platform],
[cell],[],
[AC_MSG_ERROR([futex is not supported on other platforms than Cell/B.E.])])
AC_DEFINE([ENABLE_COND_WAIT_FUTEX],[1],
[Define to 1 if futex is used to wait for conditions.])],
[AC_MSG_ERROR([invalid option --enable-cond-wait=$enable_cond_wait])])
AC_MSG_RESULT([using enable-cond-wait $enable_cond_wait])
]) # AC_CONFIG_MARS_COND_WAIT
AC_DEFUN([AC_CONFIG_DEBUG],[
AC_ARG_ENABLE(
[debug],
[AS_HELP_STRING([--enable-debug], [build debug versions of mars])])
AM_CONDITIONAL([DEBUG], [test "x${enable_debug}" = "xyes"])
AC_MSG_RESULT([using enable-debug ${enable_debug}])
]) # AC_CONFIG_DEBUG
AC_DEFUN([AC_CONFIG_MARS_POST],[
case "$with_mars_platform" in
spursengine) enable_discrete_shared_memory=yes;;
esac
if test "x$enable_discrete_shared_memory" = "xyes"; then
AC_DEFINE([MARS_ENABLE_DISCRETE_SHARED_MEMORY],[1],
[Define to 1 if shared memory between host and MPU is
separate from host memory.])
fi
])
AC_DEFUN([AC_CONFIG_MARS],[
AC_CONFIG_MARS_PLATFORM
AC_CONFIG_MARS_DISCRETE_SHARED_MEMORY
AC_CONFIG_MARS_COND_WAIT
AC_CONFIG_DEBUG
AC_CONFIG_MARS_POST
]) # AC_CONFIG_MARS
### Host specific definitions
AC_DEFUN([AC_CONFIG_MARS_NUMA],[
AC_ARG_ENABLE(
[numa],
[AS_HELP_STRING([--enable-numa], [enable NUMA support])])
case "$with_mars_platform" in
cell)
if test "x$enable_numa" = "x"; then
AC_CHECK_HEADER([numa.h],[enable_numa=yes])
fi
;;
*)
enable_numa=no
;;
esac
AC_MSG_RESULT([using enable-numa ${enable_numa}])
if test "x$enable_numa" = "xyes"; then
AC_DEFINE([MARS_ENABLE_NUMA],[1],
[Define to 1 if NUMA support is enabled.])
fi
AM_CONDITIONAL([NUMA], [test "x${enable_numa}" = "xyes"])
]) # AC_CONFIG_MARS_NUMA
AC_DEFUN([AC_CHECK_MARS_ALLOCA],[
AC_CHECK_HEADER([alloca.h],
[AC_DEFINE([MARS_HAVE_ALLOCA_H],[1],
[Define to 1 if you have the <alloca.h> header file.])])
AC_CHECK_HEADER([malloc.h],
[AC_DEFINE([MARS_HAVE_MALLOC_H],[1],
[Define to 1 if you have the <malloc.h> header file.])])
]) # AC_CHECK_MARS_ALLOCA
AC_DEFUN([AC_CONFIG_MARS_HOST],[
AC_CONFIG_MARS
AC_CONFIG_MARS_NUMA
AC_CHECK_MARS_ALLOCA
]) # AC_CONFIG_MARS_HOST
### MPU specific definitions
AC_DEFUN([AC_CONFIG_MARS_MPU],[
AC_CONFIG_MARS
]) # AC_CONFIG_MARS_MPU