Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corert.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kotas <jkotas@microsoft.com>2018-01-02 14:59:17 +0300
committerGitHub <noreply@github.com>2018-01-02 14:59:17 +0300
commit8ceb9d93892fdc5357342c37fa3c3cc255d33c0c (patch)
tree94774d5cd2856631f8377c2272de25b9e7b55e6d /src/Native
parent6f9db274e34b203543966bd9cde4c9719c1e88fe (diff)
Cleanup and simplify makefiles (#5179)
- Delete redundant or obsolete parts in makefiles - Update macOS prerequisites
Diffstat (limited to 'src/Native')
-rw-r--r--src/Native/CMakeLists.txt173
-rw-r--r--src/Native/gen-buildsys-win.bat24
2 files changed, 73 insertions, 124 deletions
diff --git a/src/Native/CMakeLists.txt b/src/Native/CMakeLists.txt
index fafb0a644..cfa999885 100644
--- a/src/Native/CMakeLists.txt
+++ b/src/Native/CMakeLists.txt
@@ -4,9 +4,14 @@ project(CoreRT)
# Include cmake functions
include(functions.cmake)
-string(FIND ${CMAKE_GENERATOR} "Visual Studio 15 2017" VS2017_POS)
-if(VS2017_POS EQUAL 0 AND (CMAKE_VERSION VERSION_LESS 3.6.0))
- message(FATAL_ERROR "CMake version 3.6.0 or higher is required to compile targeting VS 2017")
+if(CMAKE_SYSTEM_NAME STREQUAL Windows)
+ # CMake version 3.8.0 or higher is required to compile targeting VS 2017
+ cmake_minimum_required(VERSION 3.8.0)
+endif()
+
+if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
+ # CMake version 3.4.0 or higher has bug fixes required to compile targeting Darwin
+ cmake_minimum_required(VERSION 3.4.0)
endif()
set(CMAKE_MACOSX_RPATH ON)
@@ -19,80 +24,60 @@ endif()
set(CMAKE_SHARED_LIBRARY_PREFIX "")
function(clr_unknown_arch)
- if (WIN32)
- message(FATAL_ERROR "Only AMD64 and I386 are supported")
- else()
- message(FATAL_ERROR "Only AMD64, ARM64, ARM, ARMEL and I386 are supported")
- endif()
+ message(FATAL_ERROR "Only AMD64, ARM64, ARM, ARMEL and I386 are supported")
endfunction()
-if (CLR_CMAKE_TARGET_ARCH STREQUAL x64 OR CLR_CMAKE_TARGET_ARCH STREQUAL arm64)
- set(IS_64BIT_BUILD 1)
-elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL armv7l)
+if(CLR_CMAKE_TARGET_ARCH STREQUAL x64)
+ set(CLR_CMAKE_PLATFORM_ARCH_AMD64 1)
+ add_definitions(-D_TARGET_AMD64_=1)
+ add_definitions(-D_AMD64_)
+ add_definitions(-DBIT64=1)
+elseif(CLR_CMAKE_TARGET_ARCH MATCHES "^(arm|armel)$")
+ set(CLR_CMAKE_PLATFORM_ARCH_ARM 1)
+ add_definitions(-D_TARGET_ARM_=1)
+ add_definitions(-D_ARM_)
add_definitions(-DBIT32=1)
- # Because we don't use CMAKE_C_COMPILER/CMAKE_CXX_COMPILER to use clang
- # we have to set the triple by adding a compiler argument
- if(TOOLCHAIN STREQUAL arm-linux-gnueabi)
- add_compile_options(-target armv7-linux-gnueabi)
- add_compile_options(-mfloat-abi=softfp)
- else ()
- add_compile_options(-target armv7-linux-gnueabihf)
- endif ()
- add_compile_options(-mthumb)
- add_compile_options(-mfpu=vfpv3)
-elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64)
- set(IS_64BIT_BUILD 1)
- # Because we don't use CMAKE_C_COMPILER/CMAKE_CXX_COMPILER to use clang
- # we have to set the triple by adding a compiler argument
- add_compile_options(-target aarch64-linux-gnu)
-endif ()
+elseif(CLR_CMAKE_TARGET_ARCH STREQUAL arm64)
+ set(CLR_CMAKE_PLATFORM_ARCH_ARM64 1)
+ add_definitions(-D_TARGET_ARM64_=1)
+ add_definitions(-D_ARM64_)
+ add_definitions(-DBIT64=1)
+elseif(CLR_CMAKE_TARGET_ARCH STREQUAL x86)
+ set(CLR_CMAKE_PLATFORM_ARCH_I386 1)
+ add_definitions(-D_TARGET_X86_=1)
+ add_definitions(-D_X86_)
+ add_definitions(-DBIT32=1)
+else()
+ clr_unknown_arch()
+endif()
if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
- set(CLR_CMAKE_PLATFORM_UNIX 1)
- set(CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64 1)
- set(CLR_CMAKE_PLATFORM_DARWIN 1)
- if(CMAKE_VERSION VERSION_LESS "3.4.0")
- set(CMAKE_ASM_COMPILE_OBJECT "${CMAKE_C_COMPILER} <FLAGS> <DEFINES> -o <OBJECT> -c <SOURCE>")
- else()
+ set(CLR_CMAKE_PLATFORM_UNIX 1)
+ set(CLR_CMAKE_PLATFORM_DARWIN 1)
set(CMAKE_ASM_COMPILE_OBJECT "${CMAKE_C_COMPILER} <FLAGS> <DEFINES> <INCLUDES> -o <OBJECT> -c <SOURCE>")
- endif(CMAKE_VERSION VERSION_LESS "3.4.0")
endif(CMAKE_SYSTEM_NAME STREQUAL Darwin)
if(CMAKE_SYSTEM_NAME STREQUAL Linux)
set(CLR_CMAKE_PLATFORM_UNIX 1)
- if(CLR_CMAKE_TARGET_ARCH STREQUAL x64)
- set(CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64 1)
- elseif(CLR_CMAKE_TARGET_ARCH MATCHES "^(arm|armel)$")
- set(CLR_CMAKE_PLATFORM_UNIX_TARGET_ARM 1)
- elseif(CLR_CMAKE_TARGET_ARCH STREQUAL arm64)
- set(CLR_CMAKE_PLATFORM_UNIX_TARGET_ARM64 1)
- elseif(CLR_CMAKE_TARGET_ARCH STREQUAL x86)
- set(CLR_CMAKE_PLATFORM_UNIX_TARGET_I386 1)
- else()
- clr_unknown_arch()
- endif()
set(CLR_CMAKE_PLATFORM_LINUX 1)
endif(CMAKE_SYSTEM_NAME STREQUAL Linux)
+if(CMAKE_SYSTEM_NAME STREQUAL FreeBSD)
+ set(CLR_CMAKE_PLATFORM_UNIX 1)
+ set(CLR_CMAKE_PLATFORM_FREEBSD 1)
+endif(CMAKE_SYSTEM_NAME STREQUAL FreeBSD)
+
if(CMAKE_SYSTEM_NAME STREQUAL NetBSD)
set(CLR_CMAKE_PLATFORM_UNIX 1)
- if(CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64)
- set(CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64 1)
- elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL armv7l)
- set(CLR_CMAKE_PLATFORM_UNIX_TARGET_ARM 1)
- elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64)
- set(CLR_CMAKE_PLATFORM_UNIX_TARGET_ARM64 1)
- else()
- clr_unknown_arch()
- endif()
set(CLR_CMAKE_PLATFORM_NETBSD 1)
endif(CMAKE_SYSTEM_NAME STREQUAL NetBSD)
if(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
+ set(CLR_CMAKE_PLATFORM_UNIX 1)
set(CLR_CMAKE_PLATFORM_WASM 1)
endif(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
-if (CLR_CMAKE_PLATFORM_UNIX OR CLR_CMAKE_PLATFORM_WASM)
+if (CLR_CMAKE_PLATFORM_UNIX)
include_directories(inc/unix)
add_definitions(-DPLATFORM_UNIX=1)
@@ -105,14 +90,33 @@ if (CLR_CMAKE_PLATFORM_UNIX OR CLR_CMAKE_PLATFORM_WASM)
add_compile_options(-Wno-null-arithmetic)
add_compile_options(-Wno-null-conversion)
- if (CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64 OR CLR_CMAKE_PLATFORM_UNIX_TARGET_I386)
+ if (CLR_CMAKE_PLATFORM_ARCH_AMD64 OR CLR_CMAKE_PLATFORM_ARCH_I386)
# Allow 16 byte compare-exchange
add_compile_options(-mcx16)
endif()
- if (CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64)
+ if (CLR_CMAKE_PLATFORM_ARCH_ARM)
+ # Because we don't use CMAKE_C_COMPILER/CMAKE_CXX_COMPILER to use clang
+ # we have to set the triple by adding a compiler argument
+ if(TOOLCHAIN STREQUAL arm-linux-gnueabi)
+ add_compile_options(-target armv7-linux-gnueabi)
+ add_compile_options(-mfloat-abi=softfp)
+ else ()
+ add_compile_options(-target armv7-linux-gnueabihf)
+ endif ()
+ add_compile_options(-mthumb)
+ add_compile_options(-mfpu=vfpv3)
+ endif()
+
+ if (CLR_CMAKE_PLATFORM_ARCH_ARM64)
+ # Because we don't use CMAKE_C_COMPILER/CMAKE_CXX_COMPILER to use clang
+ # we have to set the triple by adding a compiler argument
+ add_compile_options(-target aarch64-linux-gnu)
+ endif ()
+
+ if (CLR_CMAKE_PLATFORM_ARCH_AMD64)
add_definitions(-DUNIX_AMD64_ABI)
- elseif (CLR_CMAKE_PLATFORM_UNIX_TARGET_I386)
+ elseif (CLR_CMAKE_PLATFORM_ARCH_I386)
add_definitions(-DUNIX_X86_ABI)
endif()
@@ -135,33 +139,7 @@ if (CLR_CMAKE_PLATFORM_UNIX OR CLR_CMAKE_PLATFORM_WASM)
if(CLR_CMAKE_PLATFORM_LINUX)
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -Wa,--noexecstack")
endif(CLR_CMAKE_PLATFORM_LINUX)
-endif(CLR_CMAKE_PLATFORM_UNIX OR CLR_CMAKE_PLATFORM_WASM)
-
-if(CLR_CMAKE_PLATFORM_UNIX_TARGET_ARM)
- set(CLR_CMAKE_PLATFORM_ARCH_ARM 1)
-elseif(CLR_CMAKE_PLATFORM_UNIX_TARGET_ARM64)
- set(CLR_CMAKE_PLATFORM_ARCH_ARM64 1)
-elseif(CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64)
- set(CLR_CMAKE_PLATFORM_ARCH_AMD64 1)
-elseif(CLR_CMAKE_PLATFORM_UNIX_TARGET_I386)
- set(CLR_CMAKE_PLATFORM_ARCH_I386 1)
-elseif(CLR_CMAKE_PLATFORM_WASM)
- set(CLR_CMAKE_PLATFORM_ARCH_WASM 1)
-elseif(WIN32)
- if (CLR_CMAKE_TARGET_ARCH STREQUAL x64)
- set(CLR_CMAKE_PLATFORM_ARCH_AMD64 1)
- set(IS_64BIT_BUILD 1)
- elseif(CLR_CMAKE_TARGET_ARCH STREQUAL x86)
- set(CLR_CMAKE_PLATFORM_ARCH_I386 1)
- set(IS_64BIT_BUILD 0)
- else()
- clr_unknown_arch()
- endif()
-endif()
-
-if(IS_64BIT_BUILD)
- add_definitions(-DBIT64=1)
-endif(IS_64BIT_BUILD)
+endif(CLR_CMAKE_PLATFORM_UNIX)
if(WIN32)
enable_language(ASM_MASM)
@@ -187,25 +165,6 @@ function(get_compile_definitions DefinitionName)
set(${DefinitionName} ${DEFINITIONS} PARENT_SCOPE)
endfunction(get_compile_definitions)
-if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
- add_definitions(-D_TARGET_AMD64_=1)
- add_definitions(-D_AMD64_)
-elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
- add_definitions(-D_TARGET_X86_=1)
- add_definitions(-D_X86_)
-elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
- add_definitions(-D_TARGET_ARM_=1)
- add_definitions(-D_ARM_)
-elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
- add_definitions(-D_TARGET_ARM64_=1)
- add_definitions(-D_ARM64_)
-elseif(CLR_CMAKE_PLATFORM_ARCH_WASM)
- add_definitions(-D_TARGET_WASM_=1)
- add_definitions(-D_WASM_)
-else()
- clr_unknown_arch()
-endif()
-
# Set the passed in RetSources variable to the list of sources with added current source directory
# to form absolute paths.
# The parameters after the RetSources are the input files.
@@ -250,7 +209,7 @@ endif (WIN32)
include(configure.cmake)
if(WIN32)
- add_subdirectory(gc)
+ add_subdirectory(gc)
endif()
add_subdirectory(Runtime)
add_subdirectory(Bootstrap)
@@ -261,10 +220,10 @@ endif(NOT CLR_CMAKE_PLATFORM_WASM)
# We don't need the PAL on Windows.
if(NOT WIN32)
- add_subdirectory(System.Private.CoreLib.Native)
+ add_subdirectory(System.Private.CoreLib.Native)
endif(NOT WIN32)
# Build ObjWriter on Linux only
if(CMAKE_SYSTEM_NAME STREQUAL Linux AND OBJWRITER_BUILD)
- add_subdirectory(ObjWriter/llvmCap)
+ add_subdirectory(ObjWriter/llvmCap)
endif()
diff --git a/src/Native/gen-buildsys-win.bat b/src/Native/gen-buildsys-win.bat
index 91e972134..12dd05a03 100644
--- a/src/Native/gen-buildsys-win.bat
+++ b/src/Native/gen-buildsys-win.bat
@@ -9,16 +9,12 @@ if NOT %argC%==4 GOTO :USAGE
if %1=="/?" GOTO :USAGE
setlocal
-set basePath=%~dp0
-:: remove quotes
-set "basePath=%basePath:"=%"
-:: remove trailing slash
-if %basePath:~-1%==\ set "basePath=%basePath:~0,-1%"
-set __VSString=12 2013
-if /i "%2" == "vs2015" (set __VSString=14 2015)
-if /i "%2" == "vs2017" (set __VSString=15 2017)
-if /i "%3" == "x64" (set __VSString=%__VSString% Win64)
+set __CmakeGenerator=Visual Studio 15 2017
+if /i "%2" == "vs2017" (set __CmakeGenerator=Visual Studio 15 2017)
+if /i "%3" == "x64" (set __CmakeGenerator=%__CmakeGenerator% Win64)
+if /i "%3" == "arm64" (set __CmakeGenerator=%__CmakeGenerator% Win64)
+if /i "%3" == "arm" (set __CmakeGenerator=%__CmakeGenerator% ARM)
if defined CMakePath goto DoGen
@@ -29,7 +25,7 @@ for /f "delims=" %%a in ('powershell -NoProfile -ExecutionPolicy ByPass "& %~dp0
if "%3" == "wasm" (
emcmake "%CMakePath%" "-DEMSCRIPTEN_GENERATE_BITCODE_STATIC_LIBRARIES=1" "-DCMAKE_TOOLCHAIN_FILE=%EMSCRIPTEN%/cmake/Modules/Platform/Emscripten.cmake" "-DCMAKE_BUILD_TYPE=%4" -G "NMake Makefiles" %1
) else (
- "%CMakePath%" "-DCLR_CMAKE_TARGET_ARCH=%3" -G "Visual Studio %__VSString%" %1
+ "%CMakePath%" "-DCLR_CMAKE_TARGET_ARCH=%3" -G "%__CmakeGenerator%" %1
)
endlocal
GOTO :DONE
@@ -38,15 +34,9 @@ GOTO :DONE
echo "Usage..."
echo "gen-buildsys-win.bat <path to top level CMakeLists.txt> <VSVersion>"
echo "Specify the path to the top level CMake file - <corert>/src/Native"
- echo "Specify the VSVersion to be used - VS2013 or VS2015"
+ echo "Specify the VSVersion to be used - VS2017"
echo "Specify the build type (Debug, Release)"
EXIT /B 1
:DONE
EXIT /B 0
-
-
-
-
-
-