summaryrefslogtreecommitdiff
path: root/src/jit/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'src/jit/CMakeLists.txt')
-rw-r--r--src/jit/CMakeLists.txt166
1 files changed, 97 insertions, 69 deletions
diff --git a/src/jit/CMakeLists.txt b/src/jit/CMakeLists.txt
index db6e5973ba..e2a9ca66ab 100644
--- a/src/jit/CMakeLists.txt
+++ b/src/jit/CMakeLists.txt
@@ -4,14 +4,13 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
include_directories("./jitstd")
include_directories("../inc")
-# Enable the following for UNIX altjit on Windows
-# add_definitions(-DALT_JIT)
-
if (CLR_CMAKE_TARGET_ARCH_AMD64 OR (CLR_CMAKE_TARGET_ARCH_I386 AND NOT CLR_CMAKE_PLATFORM_UNIX))
add_definitions(-DFEATURE_SIMD)
add_definitions(-DFEATURE_AVX_SUPPORT)
endif ()
+# JIT_BUILD disables certain PAL_TRY debugging features
+add_definitions(-DJIT_BUILD=1)
if(WIN32)
set(JIT_RESOURCES Native.rc)
@@ -76,86 +75,99 @@ set( JIT_SOURCES
valuenum.cpp
)
-if(CLR_CMAKE_TARGET_ARCH_AMD64)
- set( ARCH_SOURCES
- codegenxarch.cpp
- emitxarch.cpp
- lowerxarch.cpp
- lsraxarch.cpp
- simd.cpp
- simdcodegenxarch.cpp
- targetamd64.cpp
- unwindamd64.cpp
- )
-elseif(CLR_CMAKE_TARGET_ARCH_ARM)
- set( ARCH_SOURCES
- codegenarm.cpp
- decomposelongs.cpp
- emitarm.cpp
- lowerarm.cpp
- lsraarm.cpp
- targetarm.cpp
- unwindarm.cpp
- )
-elseif(CLR_CMAKE_TARGET_ARCH_I386)
- set( ARCH_SOURCES
- codegenxarch.cpp
- decomposelongs.cpp
- emitxarch.cpp
- lowerxarch.cpp
- lsraxarch.cpp
- simd.cpp
- simdcodegenxarch.cpp
- targetx86.cpp
- unwindx86.cpp
- )
-elseif(CLR_CMAKE_TARGET_ARCH_ARM64)
- set( ARCH_SOURCES
- codegenarm64.cpp
- emitarm64.cpp
- lowerarm64.cpp
- lsraarm64.cpp
- targetarm64.cpp
- unwindarm.cpp
- unwindarm64.cpp
- )
-else()
- clr_unknown_arch()
-endif()
-
# The following defines all the source files used by the "legacy" back-end (#ifdef LEGACY_BACKEND).
# It is always safe to include both legacy and non-legacy files in the build, as everything is properly
# #ifdef'ed, though it makes the build slightly slower to do so. Note there is only a legacy backend for
# x86 and ARM.
-if(CLR_CMAKE_TARGET_ARCH_AMD64)
- set( ARCH_LEGACY_SOURCES
- )
-elseif(CLR_CMAKE_TARGET_ARCH_ARM)
- set( ARCH_LEGACY_SOURCES
+set(JIT_ARM_LEGACY_SOURCES
codegenlegacy.cpp
registerfp.cpp
- )
-elseif(CLR_CMAKE_TARGET_ARCH_I386)
- set( ARCH_LEGACY_SOURCES
+)
+set(JIT_I386_LEGACY_SOURCES
codegenlegacy.cpp
stackfp.cpp
- )
+)
+
+# Define all the architecture-specific source files
+
+set( JIT_AMD64_SOURCES
+ codegenxarch.cpp
+ emitxarch.cpp
+ lowerxarch.cpp
+ lsraxarch.cpp
+ simd.cpp
+ simdcodegenxarch.cpp
+ targetamd64.cpp
+ unwindamd64.cpp
+)
+
+set( JIT_ARM_SOURCES
+ ${JIT_ARM_LEGACY_SOURCES}
+ codegenarmarch.cpp
+ codegenarm.cpp
+ decomposelongs.cpp
+ emitarm.cpp
+ lowerarmarch.cpp
+ lowerarm.cpp
+ lsraarmarch.cpp
+ lsraarm.cpp
+ targetarm.cpp
+ unwindarm.cpp
+)
+
+set( JIT_I386_SOURCES
+ ${JIT_I386_LEGACY_SOURCES}
+ codegenxarch.cpp
+ decomposelongs.cpp
+ emitxarch.cpp
+ lowerxarch.cpp
+ lsraxarch.cpp
+ simd.cpp
+ simdcodegenxarch.cpp
+ targetx86.cpp
+ unwindx86.cpp
+)
+
+set( JIT_ARM64_SOURCES
+ codegenarmarch.cpp
+ codegenarm64.cpp
+ emitarm64.cpp
+ lowerarmarch.cpp
+ lowerarm64.cpp
+ lsraarmarch.cpp
+ lsraarm64.cpp
+ targetarm64.cpp
+ unwindarm.cpp
+ unwindarm64.cpp
+)
+
+if(CLR_CMAKE_TARGET_ARCH_AMD64)
+ set(JIT_ARCH_SOURCES ${JIT_AMD64_SOURCES})
+elseif(CLR_CMAKE_TARGET_ARCH_ARM)
+ set(JIT_ARCH_SOURCES ${JIT_ARM_SOURCES})
+elseif(CLR_CMAKE_TARGET_ARCH_I386)
+ set(JIT_ARCH_SOURCES ${JIT_I386_SOURCES})
elseif(CLR_CMAKE_TARGET_ARCH_ARM64)
- set( ARCH_LEGACY_SOURCES
- )
+ set(JIT_ARCH_SOURCES ${JIT_ARM64_SOURCES})
else()
clr_unknown_arch()
endif()
set( SOURCES
${JIT_SOURCES}
- ${ARCH_SOURCES}
- ${ARCH_LEGACY_SOURCES}
${JIT_RESOURCES}
)
convert_to_absolute_path(SOURCES ${SOURCES})
+convert_to_absolute_path(JIT_ARCH_SOURCES ${JIT_ARCH_SOURCES})
+
+# Also convert the per-architecture sources to absolute paths, if the subdirs want to use them.
+
+convert_to_absolute_path(JIT_AMD64_SOURCES ${JIT_AMD64_SOURCES})
+convert_to_absolute_path(JIT_ARM_SOURCES ${JIT_ARM_SOURCES})
+convert_to_absolute_path(JIT_I386_SOURCES ${JIT_I386_SOURCES})
+convert_to_absolute_path(JIT_ARM64_SOURCES ${JIT_ARM64_SOURCES})
if(WIN32)
add_precompiled_header(jitpch.h ../jitpch.cpp SOURCES)
@@ -200,17 +212,33 @@ endif()
add_custom_target(jit_exports DEPENDS ${JIT_EXPORTS_FILE})
-add_subdirectory(dll)
-add_subdirectory(crossgen)
+if (FEATURE_MERGE_JIT_AND_ENGINE)
+ # Despite the directory being named "dll", it creates a static library "clrjit_static" to link into the VM.
+ add_subdirectory(dll)
+ add_subdirectory(crossgen)
+endif (FEATURE_MERGE_JIT_AND_ENGINE)
+
add_subdirectory(standalone)
if (CLR_CMAKE_PLATFORM_ARCH_ARM)
add_subdirectory(protojit)
endif (CLR_CMAKE_PLATFORM_ARCH_ARM)
+if (CLR_CMAKE_PLATFORM_ARCH_I386 OR CLR_CMAKE_PLATFORM_ARCH_AMD64)
+ # On x86, build RyuJIT/ARM32 cross-compiling altjit.
+ # On amd64, build RyuJIT/ARM64 cross-compiling altjit.
+ add_subdirectory(protononjit)
+endif ()
+
+if ((CLR_CMAKE_PLATFORM_ARCH_I386 OR CLR_CMAKE_PLATFORM_ARCH_AMD64) AND WIN32)
+ # On Windows, build altjit that targets the Linux ABI:
+ # On x86, build Linux/x86 altjit. This enables UNIX_X86_ABI.
+ # On amd64, build Linux/AMD64 altjit. This enables UNIX_AMD64_ABI and FEATURE_UNIX_AMD64_STRUCT_PASSING.
+ add_subdirectory(linuxnonjit)
+endif ()
+
if (CLR_CMAKE_PLATFORM_ARCH_I386 AND WIN32)
- add_subdirectory(legacyjit)
- if (NOT CLR_BUILD_JIT32)
- add_subdirectory(compatjit)
- endif ()
+ # On Windows x86, build altjit generating Windows/ARM32 code using LEGACY_BACKEND.
+ # (Note: we could also create linuxlegacynonjit for generating Linux/ARM32 code using LEGACY_BACKEND, if needed.)
+ add_subdirectory(legacynonjit)
endif (CLR_CMAKE_PLATFORM_ARCH_I386 AND WIN32)