Add support for GNUInstallDirs

Cmake will now include GNUInstallDirs in order to use
CMAKE_INSTALL_LIBDIR and CMAKE_INSTALL_INCLUDEDIR in
the installation paths of includes and libraries.

${CMAKE_INSTALL_INCLUDEDIR} and ${CMAKE_INSTALL_LIBDIR} is now
passed on to pkg_config.cmake in order to generate a correct
aom.pc instead of using hardcoded directories.

BUG=aomedia:2195

Change-Id: I2561f92466920cea643664c037c8e4e97342aabb
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cae4509..09aa256 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -22,10 +22,6 @@
 
 set(AOM_ROOT "${CMAKE_CURRENT_SOURCE_DIR}")
 set(AOM_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}")
-set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include"
-    CACHE PATH "Installation path of includes")
-set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib"
-    CACHE PATH "Installation path of libraries")
 
 if("${AOM_ROOT}" STREQUAL "${AOM_CONFIG_DIR}")
   message(FATAL_ERROR
@@ -192,18 +188,22 @@
                   COMMENT "Updating version info if necessary." VERBATIM)
 add_dependencies(aom_version aom_version_check)
 
-if(NOT MSVC)
+if(NOT (MSVC OR XCODE))
+  include("GNUInstallDirs")
   add_library(aom_pc ${AOM_PKG_CONFIG_SOURCES})
   add_dummy_source_file_to_target(aom_pc c)
   add_custom_command(OUTPUT "${AOM_CONFIG_DIR}/aom.pc"
-                     COMMAND ${CMAKE_COMMAND} ARGS
-                             -DAOM_CONFIG_DIR=${AOM_CONFIG_DIR}
-                             -DAOM_ROOT=${AOM_ROOT}
-                             -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
-                             -DCMAKE_PROJECT_NAME=${CMAKE_PROJECT_NAME}
-                             -DCONFIG_MULTITHREAD=${CONFIG_MULTITHREAD}
-                             -DHAVE_PTHREAD_H=${HAVE_PTHREAD_H} -P
-                             "${AOM_ROOT}/build/cmake/pkg_config.cmake"
+                     COMMAND
+                       ${CMAKE_COMMAND} ARGS -DAOM_CONFIG_DIR=${AOM_CONFIG_DIR}
+                       -DAOM_ROOT=${AOM_ROOT}
+                       -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
+                       -DCMAKE_INSTALL_BINDIR=${CMAKE_INSTALL_BINDIR}
+                       -DCMAKE_INSTALL_INCLUDEDIR=${CMAKE_INSTALL_INCLUDEDIR}
+                       -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
+                       -DCMAKE_PROJECT_NAME=${CMAKE_PROJECT_NAME}
+                       -DCONFIG_MULTITHREAD=${CONFIG_MULTITHREAD}
+                       -DHAVE_PTHREAD_H=${HAVE_PTHREAD_H} -P
+                       "${AOM_ROOT}/build/cmake/pkg_config.cmake"
                      COMMENT "Writing aom.pc" VERBATIM)
   add_dependencies(aom_pc aom_version)
 endif()
@@ -621,14 +621,16 @@
 
   set(AOM_INSTALL_LIBS aom)
 
-  install(FILES ${AOM_INSTALL_INCS} DESTINATION "${INCLUDE_INSTALL_DIR}/aom")
+  install(FILES ${AOM_INSTALL_INCS} DESTINATION
+                "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/aom")
   install(FILES "${AOM_CONFIG_DIR}/aom.pc" DESTINATION
-                "${LIB_INSTALL_DIR}/pkgconfig")
-  install(TARGETS ${AOM_INSTALL_LIBS} DESTINATION "${LIB_INSTALL_DIR}")
+                "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+  install(TARGETS ${AOM_INSTALL_LIBS} DESTINATION
+                  "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
 
   if(ENABLE_EXAMPLES)
     install(TARGETS ${AOM_INSTALL_BINS} DESTINATION
-                    "${CMAKE_INSTALL_PREFIX}/bin")
+                    "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
   endif()
 endif()
 
diff --git a/build/cmake/pkg_config.cmake b/build/cmake/pkg_config.cmake
index 64e2021..f370d85 100644
--- a/build/cmake/pkg_config.cmake
+++ b/build/cmake/pkg_config.cmake
@@ -11,6 +11,7 @@
 cmake_minimum_required(VERSION 3.5)
 
 set(REQUIRED_ARGS "AOM_ROOT" "AOM_CONFIG_DIR" "CMAKE_INSTALL_PREFIX"
+    "CMAKE_INSTALL_BINDIR" "CMAKE_INSTALL_INCLUDEDIR" "CMAKE_INSTALL_LIBDIR"
     "CMAKE_PROJECT_NAME" "CONFIG_MULTITHREAD" "HAVE_PTHREAD_H")
 
 foreach(arg ${REQUIRED_ARGS})
@@ -34,13 +35,16 @@
 
 # Write pkg-config info.
 set(prefix "${CMAKE_INSTALL_PREFIX}")
+set(bindir "${CMAKE_INSTALL_BINDIR}")
+set(includedir "${CMAKE_INSTALL_INCLUDEDIR}")
+set(libdir "${CMAKE_INSTALL_LIBDIR}")
 set(pkgconfig_file "${AOM_CONFIG_DIR}/aom.pc")
 string(TOLOWER ${CMAKE_PROJECT_NAME} pkg_name)
 file(WRITE "${pkgconfig_file}" "# libaom pkg-config.\n")
 file(APPEND "${pkgconfig_file}" "prefix=${prefix}\n")
-file(APPEND "${pkgconfig_file}" "exec_prefix=\${prefix}/bin\n")
-file(APPEND "${pkgconfig_file}" "libdir=\${prefix}/lib\n")
-file(APPEND "${pkgconfig_file}" "includedir=\${prefix}/include\n\n")
+file(APPEND "${pkgconfig_file}" "exec_prefix=\${prefix}/${bindir}\n")
+file(APPEND "${pkgconfig_file}" "libdir=\${prefix}/${libdir}\n")
+file(APPEND "${pkgconfig_file}" "includedir=\${prefix}/${includedir}\n\n")
 file(APPEND "${pkgconfig_file}" "Name: ${pkg_name}\n")
 file(APPEND "${pkgconfig_file}"
             "Description: AV1 codec library v${aom_version}.\n")
@@ -49,10 +53,11 @@
 file(APPEND "${pkgconfig_file}" "Conflicts:\n")
 if(CONFIG_MULTITHREAD AND HAVE_PTHREAD_H)
   file(APPEND "${pkgconfig_file}"
-              "Libs: -L\${prefix}/lib -l${pkg_name} -lm -lpthread\n")
+              "Libs: -L\${prefix}/${libdir} -l${pkg_name} -lm -lpthread\n")
   file(APPEND "${pkgconfig_file}" "Libs.private: -lm -lpthread\n")
 else()
-  file(APPEND "${pkgconfig_file}" "Libs: -L\${prefix}/lib -l${pkg_name} -lm\n")
+  file(APPEND "${pkgconfig_file}"
+              "Libs: -L\${prefix}/${libdir} -l${pkg_name} -lm\n")
   file(APPEND "${pkgconfig_file}" "Libs.private: -lm\n")
 endif()
-file(APPEND "${pkgconfig_file}" "Cflags: -I\${prefix}/include\n")
+file(APPEND "${pkgconfig_file}" "Cflags: -I\${prefix}/${includedir}\n")