From 2581b446f6182e9f362d6d760c8b3b102a7603a8 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Tue, 9 Apr 2019 15:21:43 -0700 Subject: Fix CMake warning about clrjit.exports.in file when using Ninja generator. Make generation of clrjit.exports.in not break incremental "install". Only write clrjit.exports.in when inputs change. --- src/jit/CMakeLists.txt | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/jit/CMakeLists.txt b/src/jit/CMakeLists.txt index 013b8974ed..0977fc1ba1 100644 --- a/src/jit/CMakeLists.txt +++ b/src/jit/CMakeLists.txt @@ -291,6 +291,8 @@ 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}) +set (CLRJIT_EXPORTS ${CMAKE_CURRENT_LIST_DIR}/ClrJit.exports) + if(WIN32) add_precompiled_header(jitpch.h ../jitpch.cpp SOURCES) @@ -299,7 +301,7 @@ if(WIN32) # massage it into the correct format here to create "ClrJit.exports.def". set(JIT_EXPORTS_FILE ${CMAKE_CURRENT_BINARY_DIR}/ClrJit.exports.def) set(JIT_EXPORTS_FILE_TEMP ${JIT_EXPORTS_FILE}.txt) - file(READ "ClrJit.exports" exports_list) + file(READ ${CLRJIT_EXPORTS} exports_list) file(WRITE ${JIT_EXPORTS_FILE_TEMP} "LIBRARY CLRJIT\n") file(APPEND ${JIT_EXPORTS_FILE_TEMP} "EXPORTS\n") file(APPEND ${JIT_EXPORTS_FILE_TEMP} ${exports_list}) @@ -311,11 +313,14 @@ if(WIN32) set(SHARED_LIB_SOURCES ${SOURCES} ${JIT_EXPORTS_FILE}) else() set(JIT_EXPORTS_IN_FILE ${CMAKE_CURRENT_BINARY_DIR}/clrjit.exports.in) - file(READ "${CMAKE_CURRENT_LIST_DIR}/ClrJit.exports" jit_exports) - file(READ "${CMAKE_CURRENT_LIST_DIR}/ClrJit.PAL.exports" pal_exports) - file(WRITE ${JIT_EXPORTS_IN_FILE} ${jit_exports}) - file(APPEND ${JIT_EXPORTS_IN_FILE} "\n") - file(APPEND ${JIT_EXPORTS_IN_FILE} ${pal_exports}) + set (CLRJIT_PAL_EXPORTS ${CMAKE_CURRENT_LIST_DIR}/ClrJit.PAL.exports) + + find_program(CAT cat) + add_custom_command( + OUTPUT ${JIT_EXPORTS_IN_FILE} + COMMAND ${CAT} ${CLRJIT_EXPORTS} ${CLRJIT_PAL_EXPORTS} > ${JIT_EXPORTS_IN_FILE} + DEPENDS ${CLRJIT_EXPORTS} ${CLRJIT_PAL_EXPORTS} + ) set(JIT_EXPORTS_FILE ${CMAKE_CURRENT_BINARY_DIR}/clrjit.exports) generate_exports_file(${JIT_EXPORTS_IN_FILE} ${JIT_EXPORTS_FILE}) -- cgit v1.2.3 From 736239ddebd84e78eb28afd15d54fd052675604d Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 10 Apr 2019 14:48:31 -0700 Subject: Generate ClrJit.exports.def at compile time on Windows. --- src/jit/CMakeLists.txt | 14 +------------- src/jit/ClrJit.exports | 11 ++++++++--- 2 files changed, 9 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/jit/CMakeLists.txt b/src/jit/CMakeLists.txt index 0977fc1ba1..3d8a24b77b 100644 --- a/src/jit/CMakeLists.txt +++ b/src/jit/CMakeLists.txt @@ -295,20 +295,8 @@ set (CLRJIT_EXPORTS ${CMAKE_CURRENT_LIST_DIR}/ClrJit.exports) if(WIN32) add_precompiled_header(jitpch.h ../jitpch.cpp SOURCES) - - # Create .def file containing a list of exports preceeded by - # 'EXPORTS'. The file "ClrJit.exports" already contains the list, so we - # massage it into the correct format here to create "ClrJit.exports.def". set(JIT_EXPORTS_FILE ${CMAKE_CURRENT_BINARY_DIR}/ClrJit.exports.def) - set(JIT_EXPORTS_FILE_TEMP ${JIT_EXPORTS_FILE}.txt) - file(READ ${CLRJIT_EXPORTS} exports_list) - file(WRITE ${JIT_EXPORTS_FILE_TEMP} "LIBRARY CLRJIT\n") - file(APPEND ${JIT_EXPORTS_FILE_TEMP} "EXPORTS\n") - file(APPEND ${JIT_EXPORTS_FILE_TEMP} ${exports_list}) - - # Copy the file only if it has changed. - execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different - ${JIT_EXPORTS_FILE_TEMP} ${JIT_EXPORTS_FILE}) + preprocess_def_file (${CLRJIT_EXPORTS} ${JIT_EXPORTS_FILE}) set(SHARED_LIB_SOURCES ${SOURCES} ${JIT_EXPORTS_FILE}) else() diff --git a/src/jit/ClrJit.exports b/src/jit/ClrJit.exports index 0126e63b4d..60a223bab1 100644 --- a/src/jit/ClrJit.exports +++ b/src/jit/ClrJit.exports @@ -1,3 +1,8 @@ -getJit -jitStartup -sxsJitStartup +; Licensed to the .NET Foundation under one or more agreements. +; The .NET Foundation licenses this file to you under the MIT license. +; See the LICENSE file in the project root for more information. + +EXPORTS + getJit + jitStartup + sxsJitStartup -- cgit v1.2.3 From ff5e2a3a7b1e2602165d4937bdd112c9eedbfaae Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 10 Apr 2019 14:54:33 -0700 Subject: Follow other projects in coreclr and have separate files for Win32/Unix exports (avoids having an extra "EXPORTS" export or having to add extra scripts. --- src/jit/CMakeLists.txt | 16 ++++------------ src/jit/ClrJit.PAL.exports | 3 +++ 2 files changed, 7 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/jit/CMakeLists.txt b/src/jit/CMakeLists.txt index 3d8a24b77b..4334cd8ee2 100644 --- a/src/jit/CMakeLists.txt +++ b/src/jit/CMakeLists.txt @@ -275,7 +275,7 @@ else() clr_unknown_arch() endif() -set( SOURCES +set(SOURCES ${JIT_SOURCES} ${JIT_HEADERS} ${JIT_RESOURCES} @@ -291,27 +291,19 @@ 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}) -set (CLRJIT_EXPORTS ${CMAKE_CURRENT_LIST_DIR}/ClrJit.exports) if(WIN32) add_precompiled_header(jitpch.h ../jitpch.cpp SOURCES) + set(CLRJIT_EXPORTS ${CMAKE_CURRENT_LIST_DIR}/ClrJit.exports) set(JIT_EXPORTS_FILE ${CMAKE_CURRENT_BINARY_DIR}/ClrJit.exports.def) preprocess_def_file (${CLRJIT_EXPORTS} ${JIT_EXPORTS_FILE}) set(SHARED_LIB_SOURCES ${SOURCES} ${JIT_EXPORTS_FILE}) else() - set(JIT_EXPORTS_IN_FILE ${CMAKE_CURRENT_BINARY_DIR}/clrjit.exports.in) - set (CLRJIT_PAL_EXPORTS ${CMAKE_CURRENT_LIST_DIR}/ClrJit.PAL.exports) - - find_program(CAT cat) - add_custom_command( - OUTPUT ${JIT_EXPORTS_IN_FILE} - COMMAND ${CAT} ${CLRJIT_EXPORTS} ${CLRJIT_PAL_EXPORTS} > ${JIT_EXPORTS_IN_FILE} - DEPENDS ${CLRJIT_EXPORTS} ${CLRJIT_PAL_EXPORTS} - ) + set(CLRJIT_EXPORTS ${CMAKE_CURRENT_LIST_DIR}/ClrJit.PAL.exports) set(JIT_EXPORTS_FILE ${CMAKE_CURRENT_BINARY_DIR}/clrjit.exports) - generate_exports_file(${JIT_EXPORTS_IN_FILE} ${JIT_EXPORTS_FILE}) + generate_exports_file(${CLRJIT_EXPORTS} ${JIT_EXPORTS_FILE}) if(CMAKE_SYSTEM_NAME STREQUAL Linux OR CMAKE_SYSTEM_NAME STREQUAL FreeBSD OR CMAKE_SYSTEM_NAME STREQUAL NetBSD) # This is required to force using our own PAL, not one that we are loaded with. diff --git a/src/jit/ClrJit.PAL.exports b/src/jit/ClrJit.PAL.exports index c6b4e8ec57..f53923fa68 100644 --- a/src/jit/ClrJit.PAL.exports +++ b/src/jit/ClrJit.PAL.exports @@ -1,3 +1,6 @@ +getJit +jitStartup +sxsJitStartup DllMain PAL_RegisterModule PAL_UnregisterModule -- cgit v1.2.3 From c2955d0f56956778ce5ae2375a0284e46a61e222 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 10 Apr 2019 15:34:06 -0700 Subject: Work around https://gitlab.kitware.com/cmake/cmake/issues/18399 by specifying that the exports file is generated in each nested directory scope. --- src/jit/armelnonjit/CMakeLists.txt | 2 ++ src/jit/dll/CMakeLists.txt | 2 ++ src/jit/linuxnonjit/CMakeLists.txt | 2 ++ src/jit/protojit/CMakeLists.txt | 2 ++ src/jit/protononjit/CMakeLists.txt | 2 ++ src/jit/standalone/CMakeLists.txt | 2 ++ 6 files changed, 12 insertions(+) (limited to 'src') diff --git a/src/jit/armelnonjit/CMakeLists.txt b/src/jit/armelnonjit/CMakeLists.txt index 6bfde4c8fa..cccba304da 100644 --- a/src/jit/armelnonjit/CMakeLists.txt +++ b/src/jit/armelnonjit/CMakeLists.txt @@ -41,6 +41,8 @@ if(WIN32) add_definitions(-DFX_VER_INTERNALNAME_STR=armelnonjit.dll) endif(WIN32) +set_source_files_properties(${JIT_EXPORTS_FILE} PROPERTIES GENERATED TRUE) + add_library_clr(armelnonjit SHARED ${SHARED_LIB_SOURCES} diff --git a/src/jit/dll/CMakeLists.txt b/src/jit/dll/CMakeLists.txt index 636ca8d7f8..9e930de69d 100644 --- a/src/jit/dll/CMakeLists.txt +++ b/src/jit/dll/CMakeLists.txt @@ -1,5 +1,7 @@ project(ClrJit) +set_source_files_properties(${JIT_EXPORTS_FILE} PROPERTIES GENERATED TRUE) + if(CLR_CMAKE_PLATFORM_UNIX) add_compile_options(-fPIC) diff --git a/src/jit/linuxnonjit/CMakeLists.txt b/src/jit/linuxnonjit/CMakeLists.txt index 6093b88833..bcd11cf3f2 100644 --- a/src/jit/linuxnonjit/CMakeLists.txt +++ b/src/jit/linuxnonjit/CMakeLists.txt @@ -27,6 +27,8 @@ if(WIN32) add_definitions(-DFX_VER_INTERNALNAME_STR=linuxnonjit.dll) endif(WIN32) +set_source_files_properties(${JIT_EXPORTS_FILE} PROPERTIES GENERATED TRUE) + add_library_clr(linuxnonjit SHARED ${SHARED_LIB_SOURCES} diff --git a/src/jit/protojit/CMakeLists.txt b/src/jit/protojit/CMakeLists.txt index 79fd9aed91..b5d4e08cfc 100644 --- a/src/jit/protojit/CMakeLists.txt +++ b/src/jit/protojit/CMakeLists.txt @@ -13,6 +13,8 @@ if(WIN32) add_definitions(-DFX_VER_INTERNALNAME_STR=protojit.dll) endif(WIN32) +set_source_files_properties(${JIT_EXPORTS_FILE} PROPERTIES GENERATED TRUE) + add_library_clr(protojit SHARED ${SHARED_LIB_SOURCES} diff --git a/src/jit/protononjit/CMakeLists.txt b/src/jit/protononjit/CMakeLists.txt index dc6a595e69..f921763e25 100644 --- a/src/jit/protononjit/CMakeLists.txt +++ b/src/jit/protononjit/CMakeLists.txt @@ -39,6 +39,8 @@ if(WIN32) add_definitions(-DFX_VER_INTERNALNAME_STR=protononjit.dll) endif(WIN32) +set_source_files_properties(${JIT_EXPORTS_FILE} PROPERTIES GENERATED TRUE) + add_library_clr(protononjit SHARED ${SHARED_LIB_SOURCES} diff --git a/src/jit/standalone/CMakeLists.txt b/src/jit/standalone/CMakeLists.txt index 5f32d49c4f..f893ddc667 100644 --- a/src/jit/standalone/CMakeLists.txt +++ b/src/jit/standalone/CMakeLists.txt @@ -12,6 +12,8 @@ if(WIN32) add_definitions(-DFX_VER_INTERNALNAME_STR=clrjit.dll) endif(WIN32) +set_source_files_properties(${JIT_EXPORTS_FILE} PROPERTIES GENERATED TRUE) + add_library_clr(clrjit SHARED ${SHARED_LIB_SOURCES} -- cgit v1.2.3