diff options
author | Jan Kotas <jkotas@microsoft.com> | 2018-01-02 14:59:17 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-02 14:59:17 +0300 |
commit | 8ceb9d93892fdc5357342c37fa3c3cc255d33c0c (patch) | |
tree | 94774d5cd2856631f8377c2272de25b9e7b55e6d /src/Native | |
parent | 6f9db274e34b203543966bd9cde4c9719c1e88fe (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.txt | 173 | ||||
-rw-r--r-- | src/Native/gen-buildsys-win.bat | 24 |
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 - - - - - - |