1
0
mirror of https://github.com/libjpeg-turbo/libjpeg-turbo.git synced 2026-10-23 11:48:53 +03:00

Build: Require CMake 3.15+

- This eliminates the need for any backward compatibility hacks in the
  build system.

- CMake 3.4- is no longer supported by CMake 4+.

- The only reason why we continued to support CMake 2.8.12 was that it
  was pre-installed on RHEL/CentOS 7, which was used by our official
  Docker image.  That was already a weak argument, since CMake 3.x
  binaries worked on systems with glibc 2.12 and later (RHEL 6+ and
  equivalents or Ubuntu 12.04+.)

  Our official Docker image now uses Rocky Linux 8 in order to support
  cross-compilation of the Arm Neon SIMD extensions with GCC 12, which
  was necessary in order to eliminate the GNU assembler (GAS) fallback
  code.

- CMake 3.15+ is pre-installed on RHEL 8+ and equivalents and Ubuntu
  20.04+, and on other platforms, it is no more difficult to install
  than CMake 2.8.12.  (In fact, newer CMake versions are easier to
  install on Mac systems.  CMake 3.18- did not provide Apple Silicon
  binaries, and CMake 3.15- was deployed as a pkg installer rather than
  a standalone app bundle.)
This commit is contained in:
DRC
2026-03-23 10:25:07 -04:00
parent 58d3f698b4
commit c39ea08d81
4 changed files with 20 additions and 46 deletions

View File

@@ -8,7 +8,7 @@ Build Requirements
### All Systems
- [CMake](https://cmake.org) v2.8.12 or later
- [CMake](https://cmake.org) v3.15 or later
- [NASM](https://nasm.us) or [Yasm](https://yasm.tortall.net)
(if building x86 or x86-64 SIMD extensions)

View File

@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 2.8.12...3.28)
cmake_minimum_required(VERSION 3.15...3.28)
if(CMAKE_EXECUTABLE_SUFFIX)
set(CMAKE_EXECUTABLE_SUFFIX_TMP ${CMAKE_EXECUTABLE_SUFFIX})
@@ -436,24 +436,14 @@ if(MSVC_LIKE)
boolean_number(WITH_CRT_DLL)
if(NOT WITH_CRT_DLL)
# Use the static C library for all build types
if(CMAKE_VERSION VERSION_EQUAL "3.15" OR
CMAKE_VERSION VERSION_GREATER "3.15")
if(CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG")
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDebug)
elseif(MSVC_IDE)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
else()
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreaded)
endif()
message(STATUS "Visual C++ run-time library: ${CMAKE_MSVC_RUNTIME_LIBRARY} (WITH_CRT_DLL = ${WITH_CRT_DLL})")
elseif(MSVC)
foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
if(${var} MATCHES "/MD")
string(REGEX REPLACE "/MD" "/MT" ${var} "${${var}}")
endif()
endforeach()
if(CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG")
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDebug)
elseif(MSVC_IDE)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
else()
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreaded)
endif()
message(STATUS "Visual C++ run-time library: ${CMAKE_MSVC_RUNTIME_LIBRARY} (WITH_CRT_DLL = ${WITH_CRT_DLL})")
endif()
add_definitions(-D_CRT_NONSTDC_NO_WARNINGS)
endif()
@@ -1906,8 +1896,7 @@ if(WITH_TURBOJPEG)
install(TARGETS tjbench
RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT bin)
endif()
if(NOT CMAKE_VERSION VERSION_LESS "3.1" AND MSVC_LIKE AND
CMAKE_C_LINKER_SUPPORTS_PDB)
if(MSVC_LIKE AND CMAKE_C_LINKER_SUPPORTS_PDB)
install(FILES "$<TARGET_PDB_FILE:turbojpeg>"
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT bin OPTIONAL)
endif()

View File

@@ -44,10 +44,6 @@ GNUInstallDirs_get_absolute_install_dir(CMAKE_INSTALL_FULL_JAVADIR
set(CMAKE_INSTALL_JAVADIR ${CMAKE_INSTALL_JAVADIR} PARENT_SCOPE)
set(CMAKE_INSTALL_FULL_JAVADIR ${CMAKE_INSTALL_FULL_JAVADIR} PARENT_SCOPE)
report_directory(JAVADIR)
if(CMAKE_VERSION VERSION_EQUAL "3.4" OR CMAKE_VERSION VERSION_GREATER "3.4")
install_jar(turbojpeg-jna DESTINATION ${CMAKE_INSTALL_FULL_JAVADIR}
COMPONENT java)
else()
install_jar(turbojpeg-jna ${CMAKE_INSTALL_FULL_JAVADIR})
endif()
install_jar(turbojpeg-jna DESTINATION ${CMAKE_INSTALL_FULL_JAVADIR}
COMPONENT java)
mark_as_advanced(CLEAR CMAKE_INSTALL_JAVADIR)

View File

@@ -11,24 +11,14 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/..)
if(MSVC_LIKE)
# Build all configurations against shared C library
if(CMAKE_VERSION VERSION_EQUAL "3.15" OR
CMAKE_VERSION VERSION_GREATER "3.15")
if(CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG")
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDebugDLL)
elseif(MSVC_IDE)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
else()
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDLL)
endif()
message(STATUS "Visual C++ run-time library for libjpeg API DLL: ${CMAKE_MSVC_RUNTIME_LIBRARY}")
elseif(MSVC)
foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
if(${var} MATCHES "/MT")
string(REGEX REPLACE "/MT" "/MD" ${var} "${${var}}")
endif()
endforeach()
if(CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG")
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDebugDLL)
elseif(MSVC_IDE)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
else()
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDLL)
endif()
message(STATUS "Visual C++ run-time library for libjpeg API DLL: ${CMAKE_MSVC_RUNTIME_LIBRARY}")
endif()
foreach(src ${JPEG_SOURCES})
@@ -164,8 +154,7 @@ if(WITH_TOOLS)
install(TARGETS cjpeg djpeg jpegtran
RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT bin)
endif()
if(NOT CMAKE_VERSION VERSION_LESS "3.1" AND MSVC_LIKE AND
CMAKE_C_LINKER_SUPPORTS_PDB)
if(MSVC_LIKE AND CMAKE_C_LINKER_SUPPORTS_PDB)
install(FILES "$<TARGET_PDB_FILE:jpeg>"
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT bin OPTIONAL)
endif()