]> granicus.if.org Git - libjpeg-turbo/commitdiff
Build: Various improvements to install/pkg system
authorDRC <information@libjpeg-turbo.org>
Thu, 8 Dec 2016 20:43:59 +0000 (14:43 -0600)
committerDRC <information@libjpeg-turbo.org>
Fri, 9 Dec 2016 00:49:14 +0000 (18:49 -0600)
- GNUInstallDirs: any directory variable can now reference any other
  directory variable by including its name in angle brackets (<>).

- Changed the documentation of the directory variables in BUILDING.md
  accordingly.  This commit also includes some formatting tweaks to
  that section (using boldface for directory names, as is our
  convention.)

- Changed the package scripts such that they use
  CMAKE_INSTALL_DATAROOTDIR rather than CMAKE_INSTALL_DATADIR.

- We no longer override the install dir. defaults on Windows unless
  performing an official build.  It may be useful, for instance, to
  use the GNU defaults when installing into an MSYS environment.

BUILDING.md
CMakeLists.txt
cmakescripts/GNUInstallDirs.cmake
release/makedpkg.in
release/rpm.spec.in
release/uninstall.in

index 43cd69ff361e976c4397455c545371c3e3a7a645..0fc37a19b668f47c9bcf949990fcaae969e8b00d 100644 (file)
@@ -641,8 +641,8 @@ Un*x
 The default value of `CMAKE_INSTALL_PREFIX` causes the libjpeg-turbo files to
 be installed with a directory structure resembling that of the official
 libjpeg-turbo binary packages.  Changing the value of `CMAKE_INSTALL_PREFIX`
-(for instance, to "/usr/local") causes the libjpeg-turbo files to be installed
-with a directory structure that conforms to GNU standards.
+(for instance, to **/usr/local**) causes the libjpeg-turbo files to be
+installed with a directory structure that conforms to GNU standards.
 
 The `CMAKE_INSTALL_BINDIR`, `CMAKE_INSTALL_DATAROOTDIR`,
 `CMAKE_INSTALL_DOCDIR`, `CMAKE_INSTALL_INCLUDEDIR`, `CMAKE_INSTALL_JAVADIR`,
@@ -650,11 +650,12 @@ The `CMAKE_INSTALL_BINDIR`, `CMAKE_INSTALL_DATAROOTDIR`,
 finer degree of control over where specific files in the libjpeg-turbo
 distribution should be installed.  These directory variables can either be
 specified as absolute paths or as paths relative to `CMAKE_INSTALL_PREFIX` (for
-instance, setting `CMAKE_INSTALL_DOCDIR=doc` would cause the documentation to
-be installed in `${CMAKE_INSTALL_PREFIX}/doc`.)  If `CMAKE_INSTALL_DOCDIR`,
-`CMAKE_INSTALL_JAVADIR`, or `CMAKE_INSTALL_MANDIR` contains the special string
-`<DATAROOTDIR>`, then that string is automatically replaced by the value of
-`CMAKE_INSTALL_DATAROOTDIR`.
+instance, setting `CMAKE_INSTALL_DOCDIR` to **doc** would cause the
+documentation to be installed in **${CMAKE\_INSTALL\_PREFIX}/doc**.)  If a
+directory variable contains the name of another directory variable in angle
+brackets, then its final value will depend on the final value of that other
+variable.  For instance, the default value of `CMAKE_INSTALL_MANDIR` is
+**\<CMAKE\_INSTALL\_DATAROOTDIR\>/man**.
 
 NOTE: If setting one of these directory variables to a relative path using the
 CMake command line, you must specify that the variable is of type `PATH`.
index d0b00683216119abe7862c30c18b79d7ad7237ba..5f31172aeed102e5855055c9d7212baf669a982a 100644 (file)
@@ -90,13 +90,11 @@ message(STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}")
 # When the prefix is /opt/${CMAKE_PROJECT_NAME}, we assume that an "official"
 # build is being created, and thus we install things into specific locations.
 
-if(CMAKE_INSTALL_PREFIX STREQUAL "${CMAKE_INSTALL_DEFAULT_PREFIX}" OR NOT UNIX)
+if(CMAKE_INSTALL_PREFIX STREQUAL "${CMAKE_INSTALL_DEFAULT_PREFIX}")
   set(CMAKE_INSTALL_DEFAULT_DATAROOTDIR "")
-  set(CMAKE_INSTALL_DEFAULT_DOCDIR "<DATAROOTDIR>/doc")
-  set(CMAKE_INSTALL_DEFAULT_JAVADIR "<DATAROOTDIR>/classes")
-endif()
-if(CMAKE_INSTALL_PREFIX STREQUAL "${CMAKE_INSTALL_DEFAULT_PREFIX}" AND UNIX)
-  if(NOT APPLE)
+  set(CMAKE_INSTALL_DEFAULT_DOCDIR "<CMAKE_INSTALL_DATAROOTDIR>/doc")
+  set(CMAKE_INSTALL_DEFAULT_JAVADIR "<CMAKE_INSTALL_DATAROOTDIR>/classes")
+  if(UNIX AND NOT APPLE)
     if(BITS EQUAL 64)
       set(CMAKE_INSTALL_DEFAULT_LIBDIR "lib64")
     else()
index 6ef626e9a805ec6dbe894921a06b1347a954f8a3..096d4e5bb2f07ff77281ab3955837bddcf3f3971 100644 (file)
@@ -286,7 +286,7 @@ set_dir(DATAROOTDIR
 # not set explicitly.  This auto-updates the defaults as DATAROOTDIR changes.
 
 if(NOT DEFINED CMAKE_INSTALL_DEFAULT_DATADIR)
-  set(CMAKE_INSTALL_DEFAULT_DATADIR "<DATAROOTDIR>")
+  set(CMAKE_INSTALL_DEFAULT_DATADIR "<CMAKE_INSTALL_DATAROOTDIR>")
 endif()
 set_dir(DATADIR
   "The directory under which read-only architecture-independent data files should be installed")
@@ -295,7 +295,7 @@ if(NOT DEFINED CMAKE_INSTALL_DEFAULT_INFODIR)
   if(CMAKE_SYSTEM_NAME MATCHES "^(.*BSD|DragonFly)$")
     set(CMAKE_INSTALL_DEFAULT_INFODIR "info")
   else()
-    set(CMAKE_INSTALL_DEFAULT_INFODIR "<DATAROOTDIR>/info")
+    set(CMAKE_INSTALL_DEFAULT_INFODIR "<CMAKE_INSTALL_DATAROOTDIR>/info")
   endif()
 endif()
 set_dir(INFODIR
@@ -305,45 +305,64 @@ if(NOT DEFINED CMAKE_INSTALL_DEFAULT_MANDIR)
   if(CMAKE_SYSTEM_NAME MATCHES "^(.*BSD|DragonFly)$")
     set(CMAKE_INSTALL_DEFAULT_MANDIR "man")
   else()
-    set(CMAKE_INSTALL_DEFAULT_MANDIR "<DATAROOTDIR>/man")
+    set(CMAKE_INSTALL_DEFAULT_MANDIR "<CMAKE_INSTALL_DATAROOTDIR>/man")
   endif()
 endif()
 set_dir(MANDIR "The directory under which man pages should be installed")
 
 if(NOT DEFINED CMAKE_INSTALL_DEFAULT_LOCALEDIR)
-  set(CMAKE_INSTALL_DEFAULT_LOCALEDIR "<DATAROOTDIR>/locale")
+  set(CMAKE_INSTALL_DEFAULT_LOCALEDIR "<CMAKE_INSTALL_DATAROOTDIR>/locale")
 endif()
 set_dir(LOCALEDIR
   "The directory under which locale-specific message catalogs should be installed")
 
 if(NOT DEFINED CMAKE_INSTALL_DEFAULT_DOCDIR)
-  set(CMAKE_INSTALL_DEFAULT_DOCDIR "<DATAROOTDIR>/doc/${PROJECT_NAME}")
+  set(CMAKE_INSTALL_DEFAULT_DOCDIR "<CMAKE_INSTALL_DATAROOTDIR>/doc/${PROJECT_NAME}")
 endif()
 set_dir(DOCDIR
   "The directory into which documentation files (other than info files) should be installed")
 
 if(NOT DEFINED CMAKE_INSTALL_DEFAULT_JAVADIR)
-  set(CMAKE_INSTALL_DEFAULT_JAVADIR "<DATAROOTDIR>/java")
+  set(CMAKE_INSTALL_DEFAULT_JAVADIR "<CMAKE_INSTALL_DATAROOTDIR>/java")
 endif()
 set_dir(JAVADIR "The directory into which Java classes should be installed")
 
-string(REGEX REPLACE "<DATAROOTDIR>" "${CMAKE_INSTALL_DATAROOTDIR}"
-  CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATADIR}")
-foreach(var INFODIR MANDIR LOCALEDIR DOCDIR JAVADIR)
-  if(NOT CMAKE_INSTALL_DATAROOTDIR)
-    string(REGEX REPLACE "<DATAROOTDIR>/" "${CMAKE_INSTALL_DATAROOTDIR}"
-      CMAKE_INSTALL_${var} "${CMAKE_INSTALL_${var}}")
-  else()
-    string(REGEX REPLACE "<DATAROOTDIR>" "${CMAKE_INSTALL_DATAROOTDIR}"
-      CMAKE_INSTALL_${var} "${CMAKE_INSTALL_${var}}")
-  endif()
-endforeach()
-
 # Save for next run
 set(_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE INTERNAL "CMAKE_INSTALL_PREFIX during last run")
 
 #-----------------------------------------------------------------------------
 
+foreach(dir
+    BINDIR
+    SBINDIR
+    LIBEXECDIR
+    SYSCONFDIR
+    SHAREDSTATEDIR
+    LOCALSTATEDIR
+    LIBDIR
+    INCLUDEDIR
+    OLDINCLUDEDIR
+    DATAROOTDIR
+    DATADIR
+    INFODIR
+    LOCALEDIR
+    MANDIR
+    DOCDIR
+    JAVADIR
+    )
+  string(REGEX REPLACE "[<>]" "@" CMAKE_INSTALL_${dir}
+    "${CMAKE_INSTALL_${dir}}")
+  # Handle the specific case of an empty CMAKE_INSTALL_DATAROOTDIR
+  if(NOT CMAKE_INSTALL_DATAROOTDIR AND
+    CMAKE_INSTALL_${dir} MATCHES "\@CMAKE_INSTALL_DATAROOTDIR\@/")
+    string(CONFIGURE "${CMAKE_INSTALL_${dir}}" CMAKE_INSTALL_${dir} @ONLY)
+    string(REGEX REPLACE "^/" "" CMAKE_INSTALL_${dir}
+      "${CMAKE_INSTALL_${dir}}")
+  else()
+    string(CONFIGURE "${CMAKE_INSTALL_${dir}}" CMAKE_INSTALL_${dir} @ONLY)
+  endif()
+endforeach()
+
 mark_as_advanced(
   CMAKE_INSTALL_BINDIR
   CMAKE_INSTALL_SBINDIR
index 96314c63dbd950e43a385786bcb9915f0038fcca..47d5050ecfafc84a8af940f47f33bb6821dc23ec 100644 (file)
@@ -65,8 +65,8 @@ makedeb()
        if [ $SUPPLEMENT = 1 ]; then
                make install DESTDIR=$TMPDIR
                rm -rf $TMPDIR$BINDIR
-               if [ "$DATADIR" != "$PREFIX" ]; then
-                       rm -rf $TMPDIR$DATADIR
+               if [ "$DATAROOTDIR" != "$PREFIX" ]; then
+                       rm -rf $TMPDIR$DATAROOTDIR
                fi
                if [ "$JAVADIR" != "" ]; then
                        rm -rf $TMPDIR$JAVADIR
@@ -98,7 +98,7 @@ VERSION=@VERSION@
 DEBARCH=@DEBARCH@
 PREFIX=@CMAKE_INSTALL_PREFIX@
 BINDIR=@CMAKE_INSTALL_FULL_BINDIR@
-DATADIR=@CMAKE_INSTALL_FULL_DATADIR@
+DATAROOTDIR=@CMAKE_INSTALL_FULL_DATAROOTDIR@
 DOCDIR=@CMAKE_INSTALL_FULL_DOCDIR@
 INCLUDEDIR=@CMAKE_INSTALL_FULL_INCLUDEDIR@
 JAVADIR=@CMAKE_INSTALL_FULL_JAVADIR@
index 00a1654201c224a097ba49d6befcd557e03c68cc..36b0c51ea2439254f1f79d337f366f72ff1cbadf 100644 (file)
@@ -1,6 +1,6 @@
 %define _prefix @CMAKE_INSTALL_PREFIX@
 %define _bindir @CMAKE_INSTALL_FULL_BINDIR@
-%define _datadir @CMAKE_INSTALL_FULL_DATADIR@
+%define _datarootdir @CMAKE_INSTALL_FULL_DATAROOTDIR@
 %define _docdir %{_defaultdocdir}/%{name}-%{version}
 %define _includedir @CMAKE_INSTALL_FULL_INCLUDEDIR@
 %define _javadir @CMAKE_INSTALL_FULL_JAVADIR@
@@ -57,7 +57,7 @@ broader range of users and developers.
 #-->cmake -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=@CMAKE_BUILD_TYPE@ \
 #-->  -DBUILD=%{release} \
 #-->  -DCMAKE_INSTALL_BINDIR=%{_bindir} \
-#-->  -DCMAKE_INSTALL_DATADIR=%{_datadir} \
+#-->  -DCMAKE_INSTALL_DATAROOTDIR=%{_datarootdir} \
 #-->  -DCMAKE_INSTALL_DOCDIR=%{_docdir} \
 #-->  -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
 #-->  -DCMAKE_INSTALL_JAVADIR=%{_javadir} \
@@ -188,8 +188,8 @@ rm -rf $RPM_BUILD_ROOT
 %{_mandir}/man1/jpegtran.1*
 %{_mandir}/man1/rdjpgcom.1*
 %{_mandir}/man1/wrjpgcom.1*
-%if "%{_prefix}" != "%{_datadir}"
- %dir %{_datadir}
+%if "%{_prefix}" != "%{_datarootdir}"
+ %dir %{_datarootdir}
 %endif
 %if "%{_with_java}" == "1"
  %dir %{_javadir}
index caf2578a53c2e506ef0b9669011586b3118255f1..353b2a65447ff83694d23705b3100ec92d390738 100644 (file)
@@ -58,7 +58,7 @@ popd
 echo Removing package directories ...
 PREFIX=@CMAKE_INSTALL_PREFIX@
 BINDIR=@CMAKE_INSTALL_FULL_BINDIR@
-DATADIR=@CMAKE_INSTALL_FULL_DATADIR@
+DATAROOTDIR=@CMAKE_INSTALL_FULL_DATAROOTDIR@
 INCLUDEDIR=@CMAKE_INSTALL_FULL_INCLUDEDIR@
 JAVADIR=@CMAKE_INSTALL_FULL_JAVADIR@
 LIBDIR=@CMAKE_INSTALL_FULL_LIBDIR@
@@ -93,8 +93,8 @@ fi
 if [ -d $JAVADIR ]; then
        rmdir $JAVADIR 2>&1 || EXITSTATUS=-1
 fi
-if [ -d $DATADIR -a "$DATADIR" != "$PREFIX" ]; then
-       rmdir $DATADIR 2>&1 || EXITSTATUS=-1
+if [ -d $DATAROOTDIR -a "$DATAROOTDIR" != "$PREFIX" ]; then
+       rmdir $DATAROOTDIR 2>&1 || EXITSTATUS=-1
 fi
 if [ "$PREFIX" = "@CMAKE_INSTALL_DEFAULT_PREFIX@" -a -h "$PREFIX/doc" ]; then
        rm $PREFIX/doc 2>&1 || EXITSTATUS=-1