[Openmp-commits] [PATCH] D143992: [openmp] Fix building for mingw targets after import library changes
Martin Storsjö via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Tue Feb 14 14:49:01 PST 2023
This revision was not accepted when it landed; it landed in state "Needs Review".
This revision was automatically updated to reflect the committed changes.
Closed by commit rG96fcaf0cc06a: [openmp] Fix building for mingw targets after import library changes (authored by mstorsjo).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D143992/new/
https://reviews.llvm.org/D143992
Files:
openmp/runtime/cmake/LibompMicroTests.cmake
openmp/runtime/src/CMakeLists.txt
Index: openmp/runtime/src/CMakeLists.txt
===================================================================
--- openmp/runtime/src/CMakeLists.txt
+++ openmp/runtime/src/CMakeLists.txt
@@ -272,6 +272,12 @@
ARCHIVE_OUTPUT_NAME ${LIBOMP_GENERATED_IMP_LIB_FILENAME}
)
+ if(MSVC)
+ set(LIBOMP_IMP_LIB_TARGET ompimp)
+ else()
+ set(LIBOMP_IMP_LIB_TARGET omp)
+ endif()
+
# Create def files to designate exported functions
libomp_get_gdflags(LIBOMP_GDFLAGS) # generate-def.pl flags (Windows only)
libomp_string_to_list("${LIBOMP_GDFLAGS}" LIBOMP_GDFLAGS)
@@ -289,18 +295,31 @@
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/dllexports ${LIBOMP_TOOLS_DIR}/generate-def.pl
)
- # Regenerate the import library to import by name, not ordinal
- add_library(ompimp STATIC ${LIBOMP_SOURCE_FILES})
- set_target_properties(ompimp PROPERTIES
- PREFIX "" SUFFIX "" OUTPUT_NAME "${LIBOMP_IMP_LIB_FILE}"
- LINKER_LANGUAGE C
- )
- set_target_properties(ompimp PROPERTIES STATIC_LIBRARY_OPTIONS
- "${CMAKE_LINK_DEF_FILE_FLAG}${CMAKE_CURRENT_BINARY_DIR}/${LIBOMPIMP_GENERATED_DEF_FILE_IMP}"
- )
- add_dependencies(ompimp libomp-needed-headers)
-
-
+ if (MSVC)
+ # Regenerate the import library to import by name, not ordinal.
+ #
+ # For mingw, we can't regenerate an import library by passing
+ # CMAKE_LINK_DEF_FILE_FLAG to the static library archiver; that just
+ # ends up creating a regular static library that contains the def file.
+ # For mingw, we would have to call the suitable dlltool for regenerating
+ # an import library. However, neither GNU nor LLVM based mingw tools
+ # generate import libraries that actually link by ordinal, so this step
+ # isn't strictly necessary.
+ #
+ # Also, in mingw builds, LIBOMP_GENERATED_IMP_LIB_FILENAME and
+ # LIBOMP_IMP_LIB_FILE currently end up equal, while they need to differ
+ # for this second step to work.
+ add_library(ompimp STATIC ${LIBOMP_SOURCE_FILES})
+ set_target_properties(ompimp PROPERTIES
+ PREFIX "" SUFFIX "" OUTPUT_NAME "${LIBOMP_IMP_LIB_FILE}"
+ LINKER_LANGUAGE C
+ )
+ set_target_properties(ompimp PROPERTIES STATIC_LIBRARY_OPTIONS
+ "${CMAKE_LINK_DEF_FILE_FLAG}${CMAKE_CURRENT_BINARY_DIR}/${LIBOMPIMP_GENERATED_DEF_FILE_IMP}"
+ )
+ add_dependencies(ompimp libomp-needed-headers)
+ endif()
+
endif()
# Building the Fortran module files
@@ -357,7 +376,7 @@
# We want to install headers in ${DESTDIR}/${CMAKE_INSTALL_FULL_INCLUDEDIR}
if(WIN32)
install(TARGETS omp RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
- install(TARGETS ompimp ARCHIVE DESTINATION "${OPENMP_INSTALL_LIBDIR}")
+ install(TARGETS ${LIBOMP_IMP_LIB_TARGET} ARCHIVE DESTINATION "${OPENMP_INSTALL_LIBDIR}")
# Create aliases (regular copies) of the library for backwards compatibility
set(LIBOMP_ALIASES "libiomp5md")
foreach(alias IN LISTS LIBOMP_ALIASES)
Index: openmp/runtime/cmake/LibompMicroTests.cmake
===================================================================
--- openmp/runtime/cmake/LibompMicroTests.cmake
+++ openmp/runtime/cmake/LibompMicroTests.cmake
@@ -40,7 +40,7 @@
# get library location
if(WIN32)
get_target_property(LIBOMP_OUTPUT_DIRECTORY omp RUNTIME_OUTPUT_DIRECTORY)
- get_target_property(LIBOMPIMP_OUTPUT_DIRECTORY ompimp ARCHIVE_OUTPUT_DIRECTORY)
+ get_target_property(LIBOMPIMP_OUTPUT_DIRECTORY ${LIBOMP_IMP_LIB_TARGET} ARCHIVE_OUTPUT_DIRECTORY)
if(NOT LIBOMPIMP_OUTPUT_DIRECTORY)
set(LIBOMPIMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
endif()
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D143992.497449.patch
Type: text/x-patch
Size: 3572 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20230214/4029f957/attachment.bin>
More information about the Openmp-commits
mailing list