Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit e1dbfa7

Browse filesBrowse files
committed
Build: Make package cfg files/install relocatable
This fully reverts c96e93b. Specifying a full path with install(TARGETS ...) causes the paths in the CMake package config files to be hard-coded, which effectively makes the package non-relocatable. Specifying a full path with other install() commands breaks the --prefix option to cmake --install. There is in fact no sane way to support blank install directories. Integrators who wish to install certain files into the main libjpeg-turbo install directory can set a particular CMAKE_INSTALL_*DIR variable to "<CMAKE_INSTALL_PREFIX>", with the understanding that doing so will break relocatability in the same way that c96e93b did. This commit also tweaks the RPM spec so that RPMs built from a source RPM will contain relocatable CMake package config files.
1 parent 174da65 commit e1dbfa7
Copy full SHA for e1dbfa7

5 files changed

+57-36Lines changed: 57 additions & 36 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎CMakeLists.txt‎

Copy file name to clipboardExpand all lines: CMakeLists.txt
+32-27Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,13 @@ if(UNIX)
213213
list(APPEND DIRLIST "MANDIR")
214214
endif()
215215
foreach(dir ${DIRLIST})
216+
# CMAKE_INSTALL_BINDIR, CMAKE_INSTALL_DOCDIR, CMAKE_INSTALL_INCLUDEDIR,
217+
# CMAKE_INSTALL_LIBDIR, and CMAKE_INSTALL_MANDIR cannot be blank, because
218+
# either CMake will fail to configure the build, or install() will attempt to
219+
# install files to the root directory.
220+
if(NOT dir STREQUAL "DATAROOTDIR" AND NOT CMAKE_INSTALL_${dir})
221+
message(FATAL_ERROR "CMAKE_INSTALL_${dir} cannot be blank")
222+
endif()
216223
report_directory(${dir})
217224
endforeach()
218225

@@ -1940,23 +1947,23 @@ set(EXE ${CMAKE_EXECUTABLE_SUFFIX})
19401947
if(WITH_TURBOJPEG)
19411948
if(ENABLE_SHARED)
19421949
install(TARGETS turbojpeg EXPORT ${CMAKE_PROJECT_NAME}Targets
1943-
INCLUDES DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}
1944-
ARCHIVE DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} COMPONENT lib
1945-
LIBRARY DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} COMPONENT lib
1946-
RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT bin)
1950+
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
1951+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib
1952+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib
1953+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin)
19471954
if(WITH_TOOLS)
19481955
install(TARGETS tjbench
1949-
RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT bin)
1956+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin)
19501957
endif()
19511958
if(MSVC_LIKE AND CMAKE_C_LINKER_SUPPORTS_PDB)
19521959
install(FILES "$<TARGET_PDB_FILE:turbojpeg>"
1953-
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT bin OPTIONAL)
1960+
DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin OPTIONAL)
19541961
endif()
19551962
endif()
19561963
if(ENABLE_STATIC)
19571964
install(TARGETS turbojpeg-static EXPORT ${CMAKE_PROJECT_NAME}Targets
1958-
INCLUDES DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}
1959-
ARCHIVE DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} COMPONENT lib)
1965+
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
1966+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib)
19601967
if(NOT ENABLE_SHARED)
19611968
if(GENERATOR_IS_MULTI_CONFIG)
19621969
set(DIR "${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}")
@@ -1965,19 +1972,19 @@ if(WITH_TURBOJPEG)
19651972
endif()
19661973
if(WITH_TOOLS)
19671974
install(PROGRAMS ${DIR}/tjbench-static${EXE}
1968-
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT bin
1975+
DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin
19691976
RENAME tjbench${EXE})
19701977
endif()
19711978
endif()
19721979
endif()
19731980
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/turbojpeg.h
1974-
DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR} COMPONENT include)
1981+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT include)
19751982
endif()
19761983

19771984
if(ENABLE_STATIC)
19781985
install(TARGETS jpeg-static EXPORT ${CMAKE_PROJECT_NAME}Targets
1979-
INCLUDES DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}
1980-
ARCHIVE DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} COMPONENT lib)
1986+
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
1987+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib)
19811988
if(NOT ENABLE_SHARED)
19821989
if(GENERATOR_IS_MULTI_CONFIG)
19831990
set(DIR "${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}")
@@ -1986,21 +1993,19 @@ if(ENABLE_STATIC)
19861993
endif()
19871994
if(WITH_TOOLS)
19881995
install(PROGRAMS ${DIR}/cjpeg-static${EXE}
1989-
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT bin
1990-
RENAME cjpeg${EXE})
1996+
DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin RENAME cjpeg${EXE})
19911997
install(PROGRAMS ${DIR}/djpeg-static${EXE}
1992-
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT bin
1993-
RENAME djpeg${EXE})
1998+
DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin RENAME djpeg${EXE})
19941999
install(PROGRAMS ${DIR}/jpegtran-static${EXE}
1995-
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT bin
2000+
DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin
19962001
RENAME jpegtran${EXE})
19972002
endif()
19982003
endif()
19992004
endif()
20002005

20012006
if(WITH_TOOLS)
20022007
install(TARGETS rdjpgcom wrjpgcom
2003-
RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT bin)
2008+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin)
20042009
endif()
20052010

20062011
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.ijg
@@ -2011,19 +2016,19 @@ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.ijg
20112016
${CMAKE_CURRENT_SOURCE_DIR}/doc/usage.txt
20122017
${CMAKE_CURRENT_SOURCE_DIR}/doc/wizard.txt
20132018
${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md
2014-
DESTINATION ${CMAKE_INSTALL_FULL_DOCDIR} COMPONENT doc)
2019+
DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT doc)
20152020
if(WITH_TURBOJPEG)
20162021
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/tjcomp.c
20172022
${CMAKE_CURRENT_SOURCE_DIR}/src/tjdecomp.c
20182023
${CMAKE_CURRENT_SOURCE_DIR}/src/tjtran.c
2019-
DESTINATION ${CMAKE_INSTALL_FULL_DOCDIR} COMPONENT doc)
2024+
DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT doc)
20202025
endif()
20212026
if(WITH_JNA)
20222027
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/jna/TJ.java
20232028
${CMAKE_CURRENT_SOURCE_DIR}/jna/TJComp.java
20242029
${CMAKE_CURRENT_SOURCE_DIR}/jna/TJDecomp.java
20252030
${CMAKE_CURRENT_SOURCE_DIR}/jna/TJTran.java
2026-
DESTINATION ${CMAKE_INSTALL_FULL_DOCDIR}/jna COMPONENT doc)
2031+
DESTINATION ${CMAKE_INSTALL_DOCDIR}/jna COMPONENT doc)
20272032
endif()
20282033

20292034
if(UNIX OR MINGW)
@@ -2033,30 +2038,30 @@ if(UNIX OR MINGW)
20332038
${CMAKE_CURRENT_SOURCE_DIR}/doc/jpegtran.1
20342039
${CMAKE_CURRENT_SOURCE_DIR}/doc/rdjpgcom.1
20352040
${CMAKE_CURRENT_SOURCE_DIR}/doc/wrjpgcom.1
2036-
DESTINATION ${CMAKE_INSTALL_FULL_MANDIR}/man1 COMPONENT man)
2041+
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT man)
20372042
endif()
20382043
endif()
20392044
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/libjpeg.pc
2040-
DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig COMPONENT lib)
2045+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT lib)
20412046
if(WITH_TURBOJPEG)
20422047
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/libturbojpeg.pc
2043-
DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig COMPONENT lib)
2048+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT lib)
20442049
endif()
20452050
install(FILES
20462051
${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/${CMAKE_PROJECT_NAME}Config.cmake
20472052
${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/${CMAKE_PROJECT_NAME}ConfigVersion.cmake
2048-
DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}
2053+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}
20492054
COMPONENT lib)
20502055
install(EXPORT ${CMAKE_PROJECT_NAME}Targets
20512056
NAMESPACE ${CMAKE_PROJECT_NAME}::
2052-
DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}
2057+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}
20532058
COMPONENT lib)
20542059

20552060
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/jconfig.h
20562061
${CMAKE_CURRENT_SOURCE_DIR}/src/jerror.h
20572062
${CMAKE_CURRENT_SOURCE_DIR}/src/jmorecfg.h
20582063
${CMAKE_CURRENT_SOURCE_DIR}/src/jpeglib.h
2059-
DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR} COMPONENT include)
2064+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT include)
20602065

20612066
include(cmakescripts/BuildPackages.cmake)
20622067

Collapse file

‎ChangeLog.md‎

Copy file name to clipboardExpand all lines: ChangeLog.md
+11-1Lines changed: 11 additions & 1 deletion
  • Display the source diff
  • Display the rich diff
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
3.1.90 (3.2 beta1)
22
==================
33

4-
### Significant changes relative to 3.1.4:
4+
### Significant changes relative to 3.1.4.1:
55

66
1. The legacy GNU Assembler (GAS) implementation of the Arm Neon SIMD
77
extensions has been removed. Arm builds of libjpeg-turbo must now use GCC 12
@@ -144,6 +144,16 @@ transform (shift with wraparound), which is similar in concept to the `-roll`
144144
option in ImageMagick and the Offset filter/tool in Photoshop and GIMP.
145145

146146

147+
3.1.4.1
148+
=======
149+
150+
### Significant changes relative to 3.1.4:
151+
152+
1. Fixed multiple issues, some long-standing and some that were regressions
153+
introduced in 3.1.4, that made the CMake package config files non-relocatable
154+
and broke the `--prefix` option to `cmake --install`.
155+
156+
147157
3.1.4
148158
=====
149159

Collapse file

‎jna/CMakeLists.txt‎

Copy file name to clipboardExpand all lines: jna/CMakeLists.txt
+4-1Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@ GNUInstallDirs_get_absolute_install_dir(CMAKE_INSTALL_FULL_JAVADIR
4343
CMAKE_INSTALL_JAVADIR)
4444
set(CMAKE_INSTALL_JAVADIR ${CMAKE_INSTALL_JAVADIR} PARENT_SCOPE)
4545
set(CMAKE_INSTALL_FULL_JAVADIR ${CMAKE_INSTALL_FULL_JAVADIR} PARENT_SCOPE)
46+
if(NOT CMAKE_INSTALL_JAVADIR)
47+
message(FATAL_ERROR "CMAKE_INSTALL_JAVADIR cannot be blank")
48+
endif()
4649
report_directory(JAVADIR)
47-
install_jar(turbojpeg-jna DESTINATION ${CMAKE_INSTALL_FULL_JAVADIR}
50+
install_jar(turbojpeg-jna DESTINATION ${CMAKE_INSTALL_JAVADIR}
4851
COMPONENT java)
4952
mark_as_advanced(CLEAR CMAKE_INSTALL_JAVADIR)
Collapse file

‎release/rpm.spec.in‎

Copy file name to clipboardExpand all lines: release/rpm.spec.in
+5-2Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,16 @@
3232
#-->%if 1
3333
%if "%{_bits}" == "64"
3434
%define _libdir %{_exec_prefix}/lib64
35+
%define _rellibdir lib64
3536
%else
3637
%if "%{_prefix}" == "/opt/libjpeg-turbo"
3738
%define _libdir %{_exec_prefix}/lib32
39+
%define _rellibdir lib32
3840
%endif
3941
%endif
4042
#-->%else
4143
%define _libdir @CMAKE_INSTALL_FULL_LIBDIR@
44+
%define _rellibdir @CMAKE_INSTALL_LIBDIR@
4245
#-->%endif
4346

4447
%define __requires_exclude_from ^%{_libdir}/cmake/@CMAKE_PROJECT_NAME@/.*$
@@ -91,9 +94,9 @@ reference implementation of the JPEG standard.
9194
#--> -DCMAKE_INSTALL_BINDIR=%{_bindir} \
9295
#--> -DCMAKE_INSTALL_DATAROOTDIR=%{_datarootdir} \
9396
#--> -DCMAKE_INSTALL_DOCDIR=%{_docdir} \
94-
#--> -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
97+
#--> -DCMAKE_INSTALL_INCLUDEDIR=@CMAKE_INSTALL_INCLUDEDIR@ \
9598
#--> -DCMAKE_INSTALL_JAVADIR=%{_javadir} \
96-
#--> -DCMAKE_INSTALL_LIBDIR=%{_libdir} \
99+
#--> -DCMAKE_INSTALL_LIBDIR=%{_rellibdir} \
97100
#--> -DCMAKE_INSTALL_MANDIR=%{_mandir} \
98101
#--> -DCMAKE_INSTALL_PREFIX=%{_prefix} \
99102
#--> -DCMAKE_POSITION_INDEPENDENT_CODE=@CMAKE_POSITION_INDEPENDENT_CODE@ \
Collapse file

‎sharedlib/CMakeLists.txt‎

Copy file name to clipboardExpand all lines: sharedlib/CMakeLists.txt
+5-5Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -166,14 +166,14 @@ endif()
166166

167167
install(TARGETS jpeg EXPORT ${CMAKE_PROJECT_NAME}Targets
168168
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
169-
ARCHIVE DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} COMPONENT lib
170-
LIBRARY DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} COMPONENT lib
171-
RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT bin)
169+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib
170+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib
171+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin)
172172
if(WITH_TOOLS)
173173
install(TARGETS cjpeg djpeg jpegtran
174-
RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT bin)
174+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin)
175175
endif()
176176
if(MSVC_LIKE AND CMAKE_C_LINKER_SUPPORTS_PDB)
177177
install(FILES "$<TARGET_PDB_FILE:jpeg>"
178-
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT bin OPTIONAL)
178+
DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin OPTIONAL)
179179
endif()

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.