summaryrefslogtreecommitdiffstats
path: root/openmp/runtime/cmake/BuildPLRules.cmake
diff options
context:
space:
mode:
authorJonathan Peyton <jonathan.l.peyton@intel.com>2015-07-15 16:05:30 +0000
committerJonathan Peyton <jonathan.l.peyton@intel.com>2015-07-15 16:05:30 +0000
commit2e0133526e85e53ff67a25511b9789d2e10f17d2 (patch)
tree773e372c749314de37743dd3fc45b62f133d2f9a /openmp/runtime/cmake/BuildPLRules.cmake
parent8da737a18a7b543e0c5b54e3e609d1a5eda8dddc (diff)
downloadbcm5719-llvm-2e0133526e85e53ff67a25511b9789d2e10f17d2.tar.gz
bcm5719-llvm-2e0133526e85e53ff67a25511b9789d2e10f17d2.zip
Large Refactor of CMake build system
This commit improves numerous functionalities of the OpenMP CMake build system to be more conducive with LLVM's build system and build philosophies. The CMake build system, as it was before this commit, was not up to LLVM's standards and did not implement the configuration stage like most CMake based build systems offer (check for compiler flags, libraries, etc.) In order to improve it dramatically in a short period of time, a large refactoring had to be done. The main changes done with this commit are as follows: * Compiler flag checks - The flags are no longer grabbed from compiler specific directories. They are checked for availability in config-ix.cmake and added accordingly inside LibompHandleFlags.cmake. * Feature checks were added in config-ix.cmake. For example, the standard CMake module FindThreads is probed for the threading model to use inside the OpenMP library. * OS detection - There is no longer a LIBOMP_OS variable, OS-specifc build logic is wrapped around the WIN32 and APPLE macros with !(WIN32 OR APPLE) meaning a Unix flavor of some sort. * Got rid of vestigial functions/macros/variables * Added new libomp_append() function which is used everywhere to conditionally or undconditionally append to a list * All targets have the libomp prefix so as not to interfere with any other project * LibompCheckLinkerFlag.cmake module was added which checks for linker flags specifically for building shared libraries. * LibompCheckFortranFlag.cmake module was added which checks for fortran flag availability. * Removed most of the cruft from the translation between the perl+Makefile based build system and this one. The remaining components that they share are perl scripts which I'm in the process of removing. There is still more left to do. The perl scripts still need to be removed, and a config.h.in file (or similarly named) needs to be added with #cmakedefine lines in it. But this is a much better first step than the previous system. Differential Revision: http://reviews.llvm.org/D10656 llvm-svn: 242298
Diffstat (limited to 'openmp/runtime/cmake/BuildPLRules.cmake')
-rw-r--r--openmp/runtime/cmake/BuildPLRules.cmake112
1 files changed, 0 insertions, 112 deletions
diff --git a/openmp/runtime/cmake/BuildPLRules.cmake b/openmp/runtime/cmake/BuildPLRules.cmake
deleted file mode 100644
index 6565c5c700b..00000000000
--- a/openmp/runtime/cmake/BuildPLRules.cmake
+++ /dev/null
@@ -1,112 +0,0 @@
-#
-#//===----------------------------------------------------------------------===//
-#//
-#// The LLVM Compiler Infrastructure
-#//
-#// This file is dual licensed under the MIT and the University of Illinois Open
-#// Source Licenses. See LICENSE.txt for details.
-#//
-#//===----------------------------------------------------------------------===//
-#
-
-###############################################################################
-# This file contains additional build rules that correspond to build.pl's rules.
-# Building libomp.dbg is linux only, Windows will build libompmd.dll.pdb
-# This file is only active if ${LIBOMP_USE_BUILDPL_RULES} is true.
-#
-# ######### BUILD DEPENDENCIES ##########
-#
-# exports/.../libomp.so exports/.../libomp.dbg
-# [copy] | | [copy]
-# | |
-# ./libomp.so ./libomp.dbg
-# [copy] / OR \____________ [copy] | [copy]
-# / \ |
-# ./unstripped/libomp.so ./stripped/libomp.so ./unstripped/libomp.dbg
-# / \ /
-# / [linking] \[strip] /[strip and store]
-# / \ /
-# ${objs} (maybe compiled with -g) ./unstripped/libomp.so (library with debug info in it)
-# |
-# | [linking]
-# |
-# ${objs} (always compiled with -g)
-#
-# For icc Linux builds, we always include debugging information via -g and create libomp.dbg
-# so that Intel(R) Parallel Amplifier can use the .dbg file.
-# For icc Windows builds, we always include debugging information via -Zi and create libomp.pdb
-# in a fashion similar to libomp.dbg
-# For icc Mac builds, we don't bother with the debug info.
-
-# We build library in unstripped directory
-file(MAKE_DIRECTORY ${build_dir}/unstripped)
-
-# Only build the .dbg file for Release builds
-# Debug and RelWithDebInfo builds should not create a .dbg file.
-# The debug info should remain in the library file.
-if(${LINUX} AND ${RELEASE_BUILD})
- set(dbg_file ${lib_item}.dbg)
-endif()
-
-################################
-# --- Create $(lib_file).dbg ---
-if(NOT "${dbg_file}" STREQUAL "")
- # if a ${dbg_file} file is going to be created, then
- file(MAKE_DIRECTORY ${build_dir}/stripped)
-
- # ./${lib_file} : stripped/${lib_file}
- # copy stripped/${lib_file} ./${lib_file}
- simple_copy_recipe("${lib_file}" "${build_dir}/stripped" "${build_dir}")
-
- # stripped/${lib_file} : unstripped/${lib_file} ./${dbg_file}
- # objcopy --strip-debug unstripped/${lib_file} stripped/${lib_file}.tmp
- # objcopy --add-gnu-debuglink=${dbg_file} stripped/${lib_file}.tmp stripped/${lib_file}
- add_custom_command(
- OUTPUT ${build_dir}/stripped/${lib_file}
- COMMAND ${CMAKE_OBJCOPY} --strip-debug ${build_dir}/unstripped/${lib_file} ${build_dir}/stripped/${lib_file}.tmp
- COMMAND ${CMAKE_OBJCOPY} --add-gnu-debuglink=${dbg_file} ${build_dir}/stripped/${lib_file}.tmp ${build_dir}/stripped/${lib_file}
- DEPENDS "${build_dir}/${dbg_file}"
- )
-
- # ./${dbg_file} : unstripped/${dbg_file}
- # copy unstripped/${dbg_file} ./${dbg_file}
- simple_copy_recipe("${dbg_file}" "${build_dir}/unstripped" "${build_dir}")
-
- # unstripped/${dbg_file} : unstripped/${lib_file}
- # objcopy --only-keep-debug unstripped/${lib_file} unstripped/${dbg_file}
- add_custom_command(
- OUTPUT ${build_dir}/unstripped/${dbg_file}
- COMMAND ${CMAKE_OBJCOPY} --only-keep-debug ${build_dir}/unstripped/${lib_file} ${build_dir}/unstripped/${dbg_file}
- DEPENDS omp
- )
-
-else()
-
- # ./${lib_file} : unstripped/${lib_file}
- # copy unstripped/${lib_file} ./${lib_file}
- simple_copy_recipe("${lib_file}" "${build_dir}/unstripped" "${build_dir}")
-endif()
-
-# Windows specific command to move around debug info files post-build
-if(NOT "${pdb_file}" STREQUAL "" AND ${RELEASE_BUILD})
- add_custom_command(TARGET omp POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E rename ${pdb_file} ${pdb_file}.nonstripped
- COMMAND ${CMAKE_COMMAND} -E rename ${pdb_file}.stripped ${pdb_file}
- )
-endif()
-
-# Have icc build libomp in unstripped directory
-set_target_properties(omp PROPERTIES
- LIBRARY_OUTPUT_DIRECTORY "${build_dir}/unstripped"
- RUNTIME_OUTPUT_DIRECTORY "${build_dir}/unstripped"
- ARCHIVE_OUTPUT_DIRECTORY "${build_dir}"
-)
-
-# Always use RelWithDebInfo flags for Release builds when using the build.pl's build rules (use -g -O2 instead of just -O3)
-# The debug info is then stripped out at the end of the build and put into libomp.dbg for Linux
-if(${RELEASE_BUILD} AND NOT ${MAC})
- set(CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELWITHDEBINFO} )
- set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
- set(CMAKE_ASM_FLAGS_RELEASE ${CMAKE_ASM_FLAGS_RELWITHDEBINFO})
-endif()
-
OpenPOWER on IntegriCloud