blob: c3c59aa76294f797433aae41a952be5b3108a7f4 [file] [log] [blame]
# Rules for building llvm-goc executable.
#----------------------------------------------------------------------
# Libraries that we need to link into llvm-goc
set(LLVM_LINK_COMPONENTS
DriverUtils
CppGoFrontEnd
CppGoPasses
${LLVM_TARGETS_TO_BUILD}
CodeGen
Core
IRReader
MC
Support
Target
Object
Option
Passes
Support
)
# Include directories needed by llvm-goc
include_directories(${GOFRONTEND_SOURCE_DIR})
include_directories(${BRIDGE_SOURCE_DIR})
include_directories(${DRIVER_UTILS_SOURCE_DIR})
include_directories("${gollvm_binroot}/driver")
# Gofrontend headers use headers from these packages.
include_directories(${EXTINSTALLDIR}/include)
# The llvm-goc executable itself
add_gollvm_tool(llvm-goc
llvm-goc.cpp)
# Record the fact that llvm-goc depends on these libs
add_dependencies(llvm-goc libmpfr libmpc libgmp)
# Add in the libraries for the llvm-goc dependencies.
target_link_libraries(llvm-goc
PRIVATE
"-L${EXTLIBDIR}" "-Wl,--push-state" "-Wl,-Bstatic" "-lmpc" "-lmpfr" "-lgmp" "-Wl,--pop-state"
)
# Create a "compiler built" file each time llvm-goc is built.
set(llvm_goc_build ${CMAKE_CURRENT_BINARY_DIR}/llvm-goc.built)
add_custom_command(
OUTPUT ${llvm_goc_build}
COMMAND ${CMAKE_COMMAND} -E touch ${llvm_goc_build}
DEPENDS llvm-goc
COMMENT "Create 'build-performed' file for llvm-goc"
VERBATIM)
# Copy the build file to the token file if different. The intent here
# is that the token file gets created in the process of building
# llvm-goc, but does NOT get updated each time llvm-goc is rebuilt.
set(llvm_goc_token ${CMAKE_CURRENT_BINARY_DIR}/llvm-goc.token)
copy_if_different(${llvm_goc_build} ${llvm_goc_token})
# Token target.
add_custom_target(llvm-goc-token ALL DEPENDS ${llvm_goc_token})
# Add a symlink to llvm-goc named "gccgo" in install dir, for
# compatibility with gccgo.
install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink \"llvm-goc\" \"${CMAKE_INSTALL_PREFIX}/bin/gccgo\")"
COMPONENT llvm-goc)