[RISCV] Support f32/f64 libcalls for sin/cos/pow/log/log2/log10/exp/exp2
[llvm-project.git] / openmp / runtime / cmake / LibompExports.cmake
blob461e47d449157789a3055f003a5f9fa57797a4e5
2 #//===----------------------------------------------------------------------===//
3 #//
4 #// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 #// See https://llvm.org/LICENSE.txt for license information.
6 #// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 #//
8 #//===----------------------------------------------------------------------===//
11 # LibompExports.cmake
12 #   Copy library and header files into the exports/ subdirectory after library build
14 # Create the suffix for the export directory
15 # - Only add to suffix when not a default value
16 # - Example suffix: .deb.s1
17 #   final export directory: exports/lin_32e.deb.s1/lib
18 # - These suffixes imply the build is a Debug, Stats-Gathering version of the library
19 set(libomp_suffix)
20 libomp_append(libomp_suffix .deb DEBUG_BUILD)
21 libomp_append(libomp_suffix .dia RELWITHDEBINFO_BUILD)
22 libomp_append(libomp_suffix .min MINSIZEREL_BUILD)
23 libomp_append(libomp_suffix .s1 LIBOMP_STATS)
24 libomp_append(libomp_suffix .ompt LIBOMP_OMPT_SUPPORT)
25 if(${LIBOMP_OMPT_SUPPORT})
26   libomp_append(libomp_suffix .optional LIBOMP_OMPT_OPTIONAL)
27 endif()
28 string(REPLACE ";" "" libomp_suffix "${libomp_suffix}")
30 # Set exports locations
31 if(WIN32)
32   set(LIBOMP_SHORT_OS win)
33 elseif(APPLE)
34   set(LIBOMP_SHORT_OS mac)
35 else()
36   set(LIBOMP_SHORT_OS lin)
37 endif()
38 if(${MIC})
39   set(libomp_platform "${LIBOMP_SHORT_OS}_${LIBOMP_MIC_ARCH}") # e.g., lin_knf, lin_knc
40 else()
41   if(${IA32})
42     set(libomp_platform "${LIBOMP_SHORT_OS}_32")
43   elseif(${INTEL64})
44     set(libomp_platform "${LIBOMP_SHORT_OS}_32e")
45   else()
46     set(libomp_platform "${LIBOMP_SHORT_OS}_${LIBOMP_ARCH}") # e.g., lin_arm, lin_ppc64
47   endif()
48 endif()
49 set(LIBOMP_EXPORTS_DIR "${LIBOMP_BASE_DIR}/exports")
50 set(LIBOMP_EXPORTS_PLATFORM_DIR "${LIBOMP_EXPORTS_DIR}/${libomp_platform}${libomp_suffix}")
51 set(LIBOMP_EXPORTS_CMN_DIR "${LIBOMP_EXPORTS_DIR}/common${libomp_suffix}/include")
52 set(LIBOMP_EXPORTS_INC_DIR "${LIBOMP_EXPORTS_PLATFORM_DIR}/include")
53 set(LIBOMP_EXPORTS_MOD_DIR "${LIBOMP_EXPORTS_PLATFORM_DIR}/include_compat")
54 set(LIBOMP_EXPORTS_LIB_DIR "${LIBOMP_EXPORTS_DIR}/${libomp_platform}${libomp_suffix}/lib")
56 # Put headers in exports/ directory post build
57 add_custom_command(TARGET omp POST_BUILD
58   COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_CMN_DIR}
59   COMMAND ${CMAKE_COMMAND} -E copy omp.h ${LIBOMP_EXPORTS_CMN_DIR}
60   COMMAND ${CMAKE_COMMAND} -E copy ompx.h ${LIBOMP_EXPORTS_CMN_DIR}
62 if(${LIBOMP_OMPT_SUPPORT})
63   add_custom_command(TARGET omp POST_BUILD
64     COMMAND ${CMAKE_COMMAND} -E copy omp-tools.h ${LIBOMP_EXPORTS_CMN_DIR}
65   )
66 endif()
67 if(${LIBOMP_FORTRAN_MODULES})
68   add_custom_command(TARGET libomp-mod POST_BUILD
69     COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_MOD_DIR}
70     COMMAND ${CMAKE_COMMAND} -E copy omp_lib.mod ${LIBOMP_EXPORTS_MOD_DIR}
71     COMMAND ${CMAKE_COMMAND} -E copy omp_lib_kinds.mod ${LIBOMP_EXPORTS_MOD_DIR}
72   )
73   add_custom_command(TARGET omp POST_BUILD
74     COMMAND ${CMAKE_COMMAND} -E copy omp_lib.h ${LIBOMP_EXPORTS_CMN_DIR}
75   )
76 endif()
78 # Copy OpenMP library into exports/ directory post build
79 if(WIN32)
80   get_target_property(LIBOMP_OUTPUT_DIRECTORY omp RUNTIME_OUTPUT_DIRECTORY)
81 else()
82   get_target_property(LIBOMP_OUTPUT_DIRECTORY omp LIBRARY_OUTPUT_DIRECTORY)
83 endif()
84 if(NOT LIBOMP_OUTPUT_DIRECTORY)
85   set(LIBOMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
86 endif()
87 add_custom_command(TARGET omp POST_BUILD
88   COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_LIB_DIR}
89   COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:omp> ${LIBOMP_EXPORTS_LIB_DIR}
92 # Copy Windows import library into exports/ directory post build
93 if(WIN32)
94   get_target_property(LIBOMPIMP_OUTPUT_DIRECTORY ${LIBOMP_IMP_LIB_TARGET} ARCHIVE_OUTPUT_DIRECTORY)
95   if(NOT LIBOMPIMP_OUTPUT_DIRECTORY)
96     set(LIBOMPIMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
97   endif()
98   add_custom_command(TARGET ${LIBOMP_IMP_LIB_TARGET} POST_BUILD
99     COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_LIB_DIR}
100     COMMAND ${CMAKE_COMMAND} -E copy ${LIBOMPIMP_OUTPUT_DIRECTORY}/${LIBOMP_IMP_LIB_FILE} ${LIBOMP_EXPORTS_LIB_DIR}
101   )
102 endif()