blob: ad60778352db11946b739352c2feb825827ba467 [file] [log] [blame]
# The MCLinker project
#
# This file is distributed under the University of Illinois Open Source
# License. See LICENSE.TXT for details.
##############################################################################
### WARNING: this file contains embedded tabs. Do not run untabify on this file.
####################
# m4 includes
m4_include(m4/acx_pthread.m4)
####################
# Autoconf/Automake Initialization
dnl AC_INIT(PKG_NAME, BUILD_VERSION, BUG_REPORTER)
AC_INIT([MCLinker],[dev],[mclinker@googlegroups.com])
AC_PREREQ(2.59)
AC_CONFIG_SRCDIR([./COPYING])
AC_CONFIG_AUX_DIR([scripts])
AC_CONFIG_MACRO_DIR([m4])
dnl Check the target for which we're linking and the host that will do the
dnl linking. This will tell us which MCLINKER will be used for linking
dnl input objects into output. This needs to be done early because
dnl following tests depend on it.
AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE([1.9 dist-bzip2 foreign subdir-objects silent-rules])
AM_SILENT_RULES([yes])
####################
# Versioning, see VERSION
MAJOR=2
MINOR=9
MICRO=0
BUILD=dev
DEV_VERSION=$MAJOR.$MINOR.$MICRO-$BUILD
PKG_VERSION=$MAJOR.$MINOR.$MICRO-$BUILD
MCLD_VERSION=$DEV_VERSION
AC_SUBST(MCLD_VERSION)
AC_DEFINE_UNQUOTED([MCLD_VERSION], ["$MCLD_VERSION"])
AH_TEMPLATE([MCLD_VERSION], [MCLINKER version])
####################
# Languages
AC_PROG_CC
AC_PROG_CXX
AC_PATH_PROG([FLEX],[flex])
AX_PROG_FLEX_VERSION([2.5.35],[],[AC_MSG_ERROR([Require flex 2.5.35 or later])])
AC_PATH_PROG([BISON],[bison])
AX_PROG_BISON_VERSION([2.4.3],[3.1],[],
[AC_MSG_ERROR([Require bison >= 2.4.3 and < 3.1])])
AC_LANG([C++])
LT_INIT
####################
# Check for libraries
# Configure pthreads.
AC_ARG_WITH([pthreads],
[AS_HELP_STRING([--with-pthreads],
[use pthreads (default is yes)])],
[with_pthreads=$withval],
[with_pthreads=check])
have_pthreads=no
AS_IF([test "x$with_pthreads" != "xno"],
[ACX_PTHREAD(
[],
[AS_IF([test "x$with_pthreads" != "xcheck"],
[AC_MSG_FAILURE(
[--with-pthreads was specified, but unable to be used])])])
have_pthreads="$acx_pthread_ok"])
AM_CONDITIONAL([HAVE_PTHREADS],[test "x$have_pthreads" == "xyes"])
AC_SUBST(PTHREAD_CFLAGS)
AC_SUBST(PTHREAD_LIBS)
####################
# Configure optimized build
AC_ARG_ENABLE(optimized,
[AS_HELP_STRING([--enable-optimized],
[turn on unit-tests (default is no)])],
[case "${enableval}" in
yes) optimized=true ;;
no) optimized=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-optimized) ;;
esac],
[optimized=false])
AM_CONDITIONAL([ENABLE_OPTIMIZED],[test "x${optimized}" == "xtrue" ])
####################
# Configure compiler warnings
AC_MSG_CHECKING([for optional compiler flags])
CXX_FLAG_CHECK(NO_VARIADIC_MACROS, [-Wno-variadic-macros])
CXX_FLAG_CHECK(NO_COVERED_SWITCH_DEFAULT, [-Wno-covered-switch-default])
CXX_FLAG_CHECK(NO_C99_EXTENSIONS, [-Wno-c99-extensions])
AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_COVERED_SWITCH_DEFAULT $NO_C99_EXTENSIONS])
####################
# Check for header files
AC_CHECK_HEADERS([fcntl.h unistd.h])
AC_CHECK_HEADERS([sys/mman.h])
AC_CHECK_HEADERS([cxxabi.h])
AC_CHECK_HEADERS([zlib.h])
####################
# Configure LLVM
CHECK_LLVM([3.6])
ENUM_MCLD_TARGETS
CHECK_ALONE_TARGET
# Config.h
AC_CONFIG_HEADER(include/mcld/Config/Config.h)
AH_TOP([
//===- Config.h.in --------------------------------------------------------===//
//
// The MCLinker Project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef MCLD_CONFIG_H
#define MCLD_CONFIG_H
])
AH_BOTTOM([
#define MCLD_REGION_CHUNK_SIZE 32
#define MCLD_NUM_OF_INPUTS 32
#define MCLD_SECTIONS_PER_INPUT 16
#define MCLD_SYMBOLS_PER_INPUT 128
#define MCLD_RELOCATIONS_PER_INPUT 1024
#define MCLD_SEGMENTS_PER_OUTPUT 8
#endif
])
####################
# OUTPUT
AC_CONFIG_FILES([VERSION])
AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([include/Makefile])
AC_CONFIG_FILES([lib/Makefile])
AC_CONFIG_FILES([utils/Makefile])
AC_CONFIG_FILES([utils/gtest/Makefile])
AC_CONFIG_FILES([utils/gtestmain/Makefile])
AC_CONFIG_FILES([utils/zlib/Makefile])
AC_CONFIG_FILES([unittests/Makefile])
AC_CONFIG_FILES([include/mcld/Config/Targets.def])
AC_CONFIG_FILES([include/mcld/Config/Linkers.def])
AC_CONFIG_FILES([tools/Makefile])
AC_CONFIG_FILES([tools/mcld/Makefile])
AC_CONFIG_FILES([test/Makefile])
AC_OUTPUT