mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-22 07:32:48 +00:00
cb7053bf7a
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56540 91177308-0d34-0410-b5e6-96231b3b80d8
56 lines
1.8 KiB
CMake
Executable File
56 lines
1.8 KiB
CMake
Executable File
macro(llvm_config executable link_components)
|
|
if( MSVC )
|
|
msvc_llvm_config(${executable} ${link_components})
|
|
else( MSVC )
|
|
nix_llvm_config(${executable} ${link_components})
|
|
endif( MSVC )
|
|
endmacro(llvm_config executable link_components)
|
|
|
|
|
|
macro(msvc_llvm_config executable link_components)
|
|
foreach(c ${link_components})
|
|
if( c STREQUAL "jit" )
|
|
set_target_properties(${executable}
|
|
PROPERTIES
|
|
LINK_FLAGS "/INCLUDE:_X86TargetMachineModule")
|
|
endif( c STREQUAL "jit" )
|
|
endforeach(c)
|
|
target_link_libraries(${executable} ${llvm_libs})
|
|
endmacro(msvc_llvm_config executable link_components)
|
|
|
|
|
|
macro(nix_llvm_config executable link_components)
|
|
set(lc "")
|
|
foreach(c ${LLVM_LINK_COMPONENTS})
|
|
set(lc "${lc} ${c}")
|
|
endforeach(c)
|
|
if( NOT HAVE_LLVM_CONFIG )
|
|
target_link_libraries(${executable}
|
|
"`${LLVM_TOOLS_BINARY_DIR}/llvm-config --libs ${lc}`")
|
|
else( NOT HAVE_LLVM_CONFIG )
|
|
# tbi: Error handling.
|
|
if( NOT PERL_FOUND )
|
|
message(FATAL_ERROR "Perl required but not found!")
|
|
endif( NOT PERL_FOUND )
|
|
execute_process(
|
|
COMMAND sh -c "${PERL_EXECUTABLE} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/llvm-config --libs ${lc}"
|
|
RESULT_VARIABLE rv
|
|
OUTPUT_VARIABLE libs
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
if(NOT rv EQUAL 0)
|
|
message(FATAL_ERROR "llvm-config failed for executable ${executable}")
|
|
endif(NOT rv EQUAL 0)
|
|
string(REPLACE " " ";" libs ${libs})
|
|
foreach(c ${libs})
|
|
if(c MATCHES ".*\\.o")
|
|
get_filename_component(fn ${c} NAME)
|
|
target_link_libraries(${executable}
|
|
${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/${fn})
|
|
else(c MATCHES ".*\\.o")
|
|
string(REPLACE "-l" "" fn ${c})
|
|
target_link_libraries(${executable} ${fn})
|
|
endif(c MATCHES ".*\\.o")
|
|
endforeach(c)
|
|
endif( NOT HAVE_LLVM_CONFIG )
|
|
endmacro(nix_llvm_config executable link_components)
|