blob: 0591f771ecec195dda3cb6ba576ec6d0304bd5e6 [file] [log] [blame]
# Notes:
#
# The code in gofrontend depends on functions from GMP, MPC, and MPFR;
# these libraries are currently handled via the cmake "ExternalProject"
# utility.
#
include(ExternalProject)
include(ProcessorCount)
include(LLVMExternalProjectUtils)
# So that we can issue "make -jN" cmds in externalproject_add
processorcount(PROCESSOR_COUNT)
# FIXME: something less hacky for MacOS
if(APPLE)
set(MCONF1 "CPPFLAGS=-I/usr/local/include")
set(MCONF2 "LDFLAGS=-L/usr/local/lib")
endif()
# Open issue: should the configure cmds below be run with
# "CC=${CMAKE_BINARY_DIR}/bin/clang"
set(MPCINSTALL ${CMAKE_CURRENT_BINARY_DIR}/external/build-mpc)
set(MPCLIBDIR "${MPCINSTALL}/lib")
externalproject_add(libmpc
URL ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz
URL_MD5 d6a1d5f8ddea3abd2cc3e98f58352d26
DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/external-downloads
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/external/mpc
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${MPCINSTALL} ${MCONF1} ${MCONF2}
BUILD_COMMAND make -j${PROCESSOR_COUNT}
INSTALL_COMMAND make -j${PROCESSOR_COUNT} install
LOG_CONFIGURE 1
LOG_BUILD 1
LOG_INSTALL 1
)
set(MPFRINSTALL ${CMAKE_CURRENT_BINARY_DIR}/external/build-mpfr)
set(MPFRLIBDIR "${MPFRINSTALL}/lib")
externalproject_add(libmpfr
URL ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2
URL_MD5 b8a2f6b0e68bef46e53da2ac439e1cf4
DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/external-downloads
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/external/mpfr
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${MPFRINSTALL} ${MCONF1} ${MCONF2}
BUILD_COMMAND make -j${PROCESSOR_COUNT}
INSTALL_COMMAND make -j${PROCESSOR_COUNT} install
LOG_CONFIGURE 1
LOG_BUILD 1
LOG_INSTALL 1
)
set(GMPINSTALL ${CMAKE_CURRENT_BINARY_DIR}/external/build-gmp)
set(GMPLIBDIR "${GMPINSTALL}/lib")
externalproject_add(libgmp
URL ftp://ftp.gnu.org/gnu/gmp/gmp-6.1.0.tar.bz2
URL_MD5 86ee6e54ebfc4a90b643a65e402c4048
DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/external-downloads
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/external/gmp
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${GMPINSTALL} ${MCONF1} ${MCONF2}
BUILD_COMMAND make -j${PROCESSOR_COUNT}
INSTALL_COMMAND make -j${PROCESSOR_COUNT} install
LOG_CONFIGURE 1
LOG_BUILD 1
LOG_INSTALL 1
)
# Location of gofrontend source code.
set(GOFRONTEND_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/gofrontend/go)
# Location of bridge source code.
set(BRIDGE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/bridge)
# Subdirectory for the middle layer that translates Backend method
# calls into LLVM IR.
add_subdirectory(bridge)
# Subdirectory for llvm-goparse executable.
add_subdirectory(driver)
# Subdir for unit tests that test the middle layer
add_subdirectory(unittests)