Author: chandlerc Date: Tue Feb 16 20:13:35 2016 New Revision: 261054 URL: http://llvm.org/viewvc/llvm-project?rev=261054&view=rev Log: [cmake] Revert r260742 (and r260744) to improve order file support.
This appears to be passing '-Wl,-order_file' to Linux link commands, which then causes the linker to silently, behind the scenes, write the output to 'rder_file' instead of somewhere else. Will work with Chris to figure out the proper support for this, but so far there are numerous people who can't get Clang to update when they build because of this. Modified: cfe/trunk/CMakeLists.txt cfe/trunk/tools/driver/CMakeLists.txt cfe/trunk/utils/perf-training/CMakeLists.txt Modified: cfe/trunk/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/CMakeLists.txt?rev=261054&r1=261053&r2=261054&view=diff ============================================================================== --- cfe/trunk/CMakeLists.txt (original) +++ cfe/trunk/CMakeLists.txt Tue Feb 16 20:13:35 2016 @@ -595,24 +595,18 @@ if( CLANG_INCLUDE_DOCS ) add_subdirectory(docs) endif() -# this line is needed as a cleanup to ensure that any CMakeCaches with the old -# default value get updated to the new default. -if(CLANG_ORDER_FILE STREQUAL "") +if(EXISTS "${CMAKE_CURRENT_BINARY_DIR}/clang.order") + file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/clang.order") +endif() + +if(CLANG_ORDER_FILE STREQUAL "${CMAKE_CURRENT_BINARY_DIR}/clang.order") unset(CLANG_ORDER_FILE CACHE) + unset(CLANG_ORDER_FILE) endif() -set(CLANG_ORDER_FILE ${CMAKE_CURRENT_BINARY_DIR}/clang.order CACHE FILEPATH +set(CLANG_ORDER_FILE "" CACHE FILEPATH "Order file to use when compiling clang in order to improve startup time.") -if(CLANG_ORDER_FILE AND NOT EXISTS ${CLANG_ORDER_FILE}) - string(FIND "${CLANG_ORDER_FILE}" "${CMAKE_CURRENT_BINARY_DIR}" PATH_START) - if(PATH_START EQUAL 0) - file(WRITE ${CLANG_ORDER_FILE} "\n") - else() - message(FATAL_ERROR "Specified order file '${CLANG_ORDER_FILE}' does not exist.") - endif() -endif() - if (CLANG_BUILT_STANDALONE OR CMAKE_VERSION VERSION_EQUAL 3 OR CMAKE_VERSION VERSION_GREATER 3) # Generate a list of CMake library targets so that other CMake projects can Modified: cfe/trunk/tools/driver/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/CMakeLists.txt?rev=261054&r1=261053&r2=261054&view=diff ============================================================================== --- cfe/trunk/tools/driver/CMakeLists.txt (original) +++ cfe/trunk/tools/driver/CMakeLists.txt Tue Feb 16 20:13:35 2016 @@ -87,24 +87,8 @@ if (APPLE) set(TOOL_INFO_BUILD_VERSION) endif() -if(CLANG_ORDER_FILE) - include(CMakePushCheckState) - - function(check_linker_flag flag out_var) - cmake_push_check_state() - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${flag}") - check_cxx_compiler_flag("" ${out_var}) - cmake_pop_check_state() - endfunction() - - # This is a test to ensure the actual order file works with the linker. - check_linker_flag("-Wl,-order_file,${CLANG_ORDER_FILE}" - LINKER_ORDER_FILE_WORKS) - - if(LINKER_ORDER_FILE_WORKS) - target_link_libraries(clang "-Wl,-order_file,${CLANG_ORDER_FILE}") - set_target_properties(clang PROPERTIES LINK_DEPENDS ${CLANG_ORDER_FILE}) - endif() +if(CLANG_ORDER_FILE AND EXISTS CLANG_ORDER_FILE) + target_link_libraries(clang "-Wl,-order_file,${CLANG_ORDER_FILE}") endif() if(WITH_POLLY AND LINK_POLLY_INTO_TOOLS) Modified: cfe/trunk/utils/perf-training/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/perf-training/CMakeLists.txt?rev=261054&r1=261053&r2=261054&view=diff ============================================================================== --- cfe/trunk/utils/perf-training/CMakeLists.txt (original) +++ cfe/trunk/utils/perf-training/CMakeLists.txt Tue Feb 16 20:13:35 2016 @@ -55,8 +55,9 @@ if(DTRACE) COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py clean ${CMAKE_CURRENT_BINARY_DIR} dtrace COMMENT "Clearing old dtrace data") + add_custom_target(generate-order-file - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py gen-order-file --binary $<TARGET_FILE:clang> --output ${CLANG_ORDER_FILE} ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py gen-order-file --binary $<TARGET_FILE:clang> --output ${CMAKE_CURRENT_BINARY_DIR}/clang.order ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generating order file" DEPENDS generate-dtrace-logs) endif() _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits