Clean up JIT build rules
authorBruce Forstall <brucefo@microsoft.com>
Fri, 8 Apr 2016 18:29:56 +0000 (11:29 -0700)
committerBruce Forstall <brucefo@microsoft.com>
Fri, 8 Apr 2016 20:00:51 +0000 (13:00 -0700)
Add SIMD files to x86 build (they aren't used, yet).

Separate out the LEGACY_BACKEND files, to be explicit about them.

Make protojit and standalone build rules more similar.

src/jit/CMakeLists.txt
src/jit/protojit/CMakeLists.txt

index 79351e0..73ecac3 100644 (file)
@@ -72,32 +72,30 @@ set( JIT_SOURCES
 
 if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
   set( ARCH_SOURCES
-    targetamd64.cpp
-    unwindamd64.cpp
+    codegenxarch.cpp
     emitxarch.cpp
     lowerxarch.cpp
-    codegenxarch.cpp
-    simdcodegenxarch.cpp
     simd.cpp
+    simdcodegenxarch.cpp
+    targetamd64.cpp
+    unwindamd64.cpp
   )
 elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
   set( ARCH_SOURCES
+    codegenarm.cpp
     emitarm.cpp
-    targetarm.cpp
     lowerarm.cpp
-    codegenarm.cpp
+    targetarm.cpp
     unwindarm.cpp
-    codegenlegacy.cpp
-    registerfp.cpp
   )
 elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
   set( ARCH_SOURCES
+    codegenxarch.cpp
     emitxarch.cpp
-    targetx86.cpp
     lowerxarch.cpp
-    codegenxarch.cpp
-    codegenlegacy.cpp
-    stackfp.cpp
+    simd.cpp
+    simdcodegenxarch.cpp
+    targetx86.cpp
   )
 elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
   set( ARCH_SOURCES
@@ -112,10 +110,36 @@ 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_PLATFORM_ARCH_AMD64)
+  set( ARCH_LEGACY_SOURCES
+  )
+elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
+  set( ARCH_LEGACY_SOURCES
+    codegenlegacy.cpp
+    registerfp.cpp
+  )
+elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+  set( ARCH_LEGACY_SOURCES
+    codegenlegacy.cpp
+    stackfp.cpp
+  )
+elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
+  set( ARCH_LEGACY_SOURCES
+  )
+else()
+  clr_unknown_arch()
+endif()
+
 set( SOURCES
   ${JIT_SOURCES}
   ${ARCH_SOURCES}
- )
+  ${ARCH_LEGACY_SOURCES}
+)
 
 convert_to_absolute_path(SOURCES ${SOURCES})
 
index 10da90a..f5b55ab 100644 (file)
@@ -1,7 +1,14 @@
 project(protojit)
 
-remove_definitions(-DFEATURE_MERGE_JIT_AND_ENGINE)
 add_definitions(-DALT_JIT)
+add_definitions(-DFEATURE_NO_HOST)
+add_definitions(-DSELF_NO_HOST)
+remove_definitions(-DFEATURE_MERGE_JIT_AND_ENGINE)
+
+if(CLR_CMAKE_PLATFORM_LINUX OR CLR_CMAKE_PLATFORM_NETBSD)
+    # This is required to force using our own PAL, not one that we are loaded with.
+    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic -Bsymbolic-functions")
+endif(CLR_CMAKE_PLATFORM_LINUX OR CLR_CMAKE_PLATFORM_NETBSD)
 
 add_library_clr(protojit
    SHARED
@@ -41,7 +48,4 @@ target_link_libraries(protojit
 )
 
 # add the install targets
-install (TARGETS protojit DESTINATION .)
-if(WIN32)
-    install (FILES ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/protojit.pdb DESTINATION PDB)
-endif(WIN32)
+install_clr(protojit)