--- a/makefiles/cmake/vmcs.cmake
+++ b/makefiles/cmake/vmcs.cmake
@@ -10,7 +10,7 @@ INCLUDE(CPack)
 if (ANDROID)
   SET(VMCS_INSTALL_PREFIX "/vendor/brcm/islands" CACHE PATH "Prefix prepended to install directories" FORCE)
 elseif(NOT DEFINED VMCS_INSTALL_PREFIX)
-  SET(VMCS_INSTALL_PREFIX "/opt/vc" CACHE PATH "Prefix prepended to install directories" FORCE)
+  SET(VMCS_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE PATH "Prefix prepended to install directories" FORCE)
 endif()
 
 SET(CMAKE_INSTALL_PREFIX "${VMCS_INSTALL_PREFIX}" CACHE INTERNAL "Prefix
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,6 +20,8 @@ get_filename_component(VIDEOCORE_ROOT .
 
 set(VCOS_PTHREADS_BUILD_SHARED TRUE)
 
+include(GNUInstallDirs)
+
 include(makefiles/cmake/global_settings.cmake)
 include(makefiles/cmake/arm-linux.cmake)
 include(makefiles/cmake/vmcs.cmake)
@@ -125,7 +127,7 @@ if(PKG_CONFIG_FOUND)
 	foreach(PCFILE bcm_host.pc brcmegl.pc brcmglesv2.pc brcmvg.pc vcsm.pc mmal.pc)
 		configure_file("pkgconfig/${PCFILE}.in" "${PCFILE}" @ONLY)
 		install(FILES       "${CMAKE_CURRENT_BINARY_DIR}/${PCFILE}"
-			DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
+			DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
 	endforeach()
 endif()
 # Remove cache entry, if one added by command line
--- a/interface/mmal/components/CMakeLists.txt
+++ b/interface/mmal/components/CMakeLists.txt
@@ -30,5 +30,7 @@ set(container_libs ${container_libs} con
 target_link_libraries(mmal_components ${container_libs} mmal_util)
 target_link_libraries(mmal_components mmal_core)
 
-install(TARGETS mmal_components DESTINATION lib)
+set_target_properties(mmal_components PROPERTIES SOVERSION 0)
+
+install(TARGETS mmal_components DESTINATION ${CMAKE_INSTALL_LIBDIR})
 
--- a/host_applications/linux/libs/sm/CMakeLists.txt
+++ b/host_applications/linux/libs/sm/CMakeLists.txt
@@ -14,5 +14,7 @@ add_library(vcsm ${SHARED} user-vcsm.c)
 
 target_link_libraries(vcsm vcos)
 
-install(TARGETS vcsm DESTINATION lib)
+set_target_properties(vcsm PROPERTIES SOVERSION 0)
+
+install(TARGETS vcsm DESTINATION ${CMAKE_INSTALL_LIBDIR})
 install(FILES user-vcsm.h DESTINATION include/interface/vcsm)
--- a/interface/khronos/CMakeLists.txt
+++ b/interface/khronos/CMakeLists.txt
@@ -78,8 +78,11 @@ target_link_libraries(GLESv2 EGL khrn_cl
 target_link_libraries(WFC EGL)
 target_link_libraries(OpenVG EGL)
 
-install(TARGETS EGL GLESv2 OpenVG WFC khrn_client DESTINATION lib)
-install(TARGETS EGL_static GLESv2_static khrn_static DESTINATION lib)
+set_target_properties(EGL GLESv2 OpenVG WFC khrn_client PROPERTIES SOVERSION 0)
+set_target_properties(EGL_static GLESv2_static khrn_static PROPERTIES SOVERSION 0)
+
+install(TARGETS EGL GLESv2 OpenVG WFC khrn_client DESTINATION ${CMAKE_INSTALL_LIBDIR})
+install(TARGETS EGL_static GLESv2_static khrn_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
 
 # recommended names to use to avoid conflicts with mesa libs
 add_library(brcmEGL ${SHARED} ${EGL_SOURCE})
@@ -92,4 +95,6 @@ target_link_libraries(brcmGLESv2 brcmEGL
 target_link_libraries(brcmWFC brcmEGL)
 target_link_libraries(brcmOpenVG brcmEGL)
 
-install(TARGETS brcmEGL brcmGLESv2 brcmOpenVG brcmWFC DESTINATION lib)
+set_target_properties(brcmEGL brcmGLESv2 brcmOpenVG brcmWFC PROPERTIES SOVERSION 0)
+
+install(TARGETS brcmEGL brcmGLESv2 brcmOpenVG brcmWFC DESTINATION ${CMAKE_INSTALL_LIBDIR})
--- a/interface/vcos/pthreads/CMakeLists.txt
+++ b/interface/vcos/pthreads/CMakeLists.txt
@@ -41,6 +41,7 @@ else ()
    target_link_libraries (vcos pthread rt)
 endif ()
 
+set_target_properties(vcos PROPERTIES SOVERSION 0)
 
 #install(FILES ${HEADERS} DESTINATION include)
-install(TARGETS vcos DESTINATION lib)
+install(TARGETS vcos DESTINATION ${CMAKE_INSTALL_LIBDIR})
--- a/host_applications/linux/libs/bcm_host/CMakeLists.txt
+++ b/host_applications/linux/libs/bcm_host/CMakeLists.txt
@@ -19,5 +19,7 @@ add_library(bcm_host ${SHARED} bcm_host.
 
 target_link_libraries(bcm_host vcos vchostif)
 
-install(TARGETS bcm_host DESTINATION lib)
+set_target_properties(bcm_host PROPERTIES SOVERSION 0)
+
+install(TARGETS bcm_host DESTINATION ${CMAKE_INSTALL_LIBDIR})
 
--- a/host_applications/linux/libs/debug_sym/CMakeLists.txt
+++ b/host_applications/linux/libs/debug_sym/CMakeLists.txt
@@ -11,6 +11,9 @@ include_directories (
 add_library(debug_sym ${SHARED} debug_sym.c)
 add_library(debug_sym_static STATIC debug_sym.c)
 
-install(TARGETS debug_sym DESTINATION lib)
-install(TARGETS debug_sym_static DESTINATION lib)
+set_target_properties(debug_sym PROPERTIES SOVERSION 0)
+set_target_properties(debug_sym_static PROPERTIES SOVERSION 0)
+
+install(TARGETS debug_sym DESTINATION ${CMAKE_INSTALL_LIBDIR})
+install(TARGETS debug_sym_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
 install(FILES debug_sym.h DESTINATION include/interface/debug_sym)
--- a/interface/mmal/CMakeLists.txt
+++ b/interface/mmal/CMakeLists.txt
@@ -16,7 +16,9 @@ add_subdirectory(client)
 
 target_link_libraries(mmal mmal_core mmal_util mmal_vc_client vcos mmal_components)
 
-install(TARGETS mmal DESTINATION lib)
+set_target_properties(mmal PROPERTIES SOVERSION 0)
+
+install(TARGETS mmal DESTINATION ${CMAKE_INSTALL_LIBDIR})
 install(FILES
    mmal.h
    mmal_buffer.h
--- a/interface/mmal/core/CMakeLists.txt
+++ b/interface/mmal/core/CMakeLists.txt
@@ -13,7 +13,9 @@ add_library (mmal_core ${LIBRARY_TYPE}
 
 target_link_libraries (mmal_core vcos mmal_vc_client)
 
-install(TARGETS mmal_core DESTINATION lib)
+set_target_properties(mmal_core PROPERTIES SOVERSION 0)
+
+install(TARGETS mmal_core DESTINATION ${CMAKE_INSTALL_LIBDIR})
 install(FILES
    mmal_buffer_private.h
    mmal_clock_private.h
--- a/interface/mmal/util/CMakeLists.txt
+++ b/interface/mmal/util/CMakeLists.txt
@@ -12,7 +12,9 @@ add_library (mmal_util ${LIBRARY_TYPE}
 
 target_link_libraries (mmal_util vcos)
 
-install(TARGETS mmal_util DESTINATION lib)
+set_target_properties(mmal_util PROPERTIES SOVERSION 0)
+
+install(TARGETS mmal_util DESTINATION ${CMAKE_INSTALL_LIBDIR})
 install(FILES
    mmal_component_wrapper.h
    mmal_connection.h
--- a/interface/mmal/vc/CMakeLists.txt
+++ b/interface/mmal/vc/CMakeLists.txt
@@ -13,7 +13,9 @@ endif(BUILD_MMAL_APPS)
 
 include_directories ( ../../../host_applications/linux/libs/sm )
 
-install(TARGETS mmal_vc_client DESTINATION lib)
+set_target_properties(mmal_vc_client PROPERTIES SOVERSION 0)
+
+install(TARGETS mmal_vc_client DESTINATION ${CMAKE_INSTALL_LIBDIR})
 install(FILES
    mmal_vc_api.h
    mmal_vc_api_drm.h
--- a/interface/vchiq_arm/CMakeLists.txt
+++ b/interface/vchiq_arm/CMakeLists.txt
@@ -5,7 +5,9 @@ add_library(vchiq_arm SHARED
 # pull in VCHI cond variable emulation
 target_link_libraries(vchiq_arm vcos)
 
-install(TARGETS vchiq_arm DESTINATION lib)
+set_target_properties(vchiq_arm PROPERTIES SOVERSION 0)
+
+install(TARGETS vchiq_arm DESTINATION ${CMAKE_INSTALL_LIBDIR})
 #install(FILES etc/10-vchiq.rules DESTINATION /etc/udev/rules.d)
 
 include_directories(../..)
--- a/interface/vmcs_host/CMakeLists.txt
+++ b/interface/vmcs_host/CMakeLists.txt
@@ -32,5 +32,7 @@ target_link_libraries(vchostif vchiq_arm
 
 #target_link_libraries(bufman WFC)
 
-install(TARGETS ${INSTALL_TARGETS} DESTINATION lib)
+set_target_properties(${INSTALL_TARGETS} PROPERTIES SOVERSION 0)
+
+install(TARGETS ${INSTALL_TARGETS} DESTINATION ${CMAKE_INSTALL_LIBDIR})
 
--- a/middleware/openmaxil/CMakeLists.txt
+++ b/middleware/openmaxil/CMakeLists.txt
@@ -49,4 +49,6 @@ else ()
 
 endif ()
 
-install (TARGETS openmaxil DESTINATION lib)
+set_target_properties(openmaxil PROPERTIES SOVERSION 0)
+
+install (TARGETS openmaxil DESTINATION ${CMAKE_INSTALL_LIBDIR})
--- a/containers/CMakeLists.txt
+++ b/containers/CMakeLists.txt
@@ -66,7 +66,10 @@ set(packetizers_SRCS ${packetizers_SRCS}
 
 add_library(containers ${LIBRARY_TYPE} ${core_SRCS} ${io_SRCS} ${net_SRCS} ${packetizers_SRCS})
 target_link_libraries(containers vcos)
-install(TARGETS containers DESTINATION lib)
+
+set_target_properties(containers PROPERTIES SOVERSION 0)
+
+install(TARGETS containers DESTINATION ${CMAKE_INSTALL_LIBDIR})
 
 set(container_readers)
 set(container_writers)
--- a/helpers/dtoverlay/CMakeLists.txt
+++ b/helpers/dtoverlay/CMakeLists.txt
@@ -22,4 +22,6 @@ add_library (dtovl ${SHARED}
 
 target_link_libraries(dtovl fdt)
 
-install (TARGETS dtovl DESTINATION lib)
+set_target_properties(dtovl PROPERTIES SOVERSION 0)
+
+install (TARGETS dtovl DESTINATION ${CMAKE_INSTALL_LIBDIR})
--- a/pkgconfig/bcm_host.pc.in
+++ b/pkgconfig/bcm_host.pc.in
@@ -1,6 +1,6 @@
 prefix=@CMAKE_INSTALL_PREFIX@
 exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
+libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
 includedir=${prefix}/include
 
 Name: bcm_host
--- a/pkgconfig/brcmegl.pc.in
+++ b/pkgconfig/brcmegl.pc.in
@@ -1,6 +1,6 @@
 prefix=@CMAKE_INSTALL_PREFIX@
 exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
+libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
 includedir=${prefix}/include
 
 Name: brcmEGL
--- a/pkgconfig/brcmglesv2.pc.in
+++ b/pkgconfig/brcmglesv2.pc.in
@@ -1,6 +1,6 @@
 prefix=@CMAKE_INSTALL_PREFIX@
 exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
+libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
 includedir=${prefix}/include
 
 Name: brcmGLESv2
--- a/pkgconfig/brcmvg.pc.in
+++ b/pkgconfig/brcmvg.pc.in
@@ -1,6 +1,6 @@
 prefix=@CMAKE_INSTALL_PREFIX@
 exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
+libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
 includedir=${prefix}/include
 
 Name: brcmOpenVG
--- a/pkgconfig/mmal.pc.in
+++ b/pkgconfig/mmal.pc.in
@@ -1,6 +1,6 @@
 prefix=@CMAKE_INSTALL_PREFIX@
 exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
+libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
 includedir=${prefix}/include
 
 Name: MMAL
--- a/pkgconfig/vcsm.pc.in
+++ b/pkgconfig/vcsm.pc.in
@@ -1,6 +1,6 @@
 prefix=@CMAKE_INSTALL_PREFIX@
 exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
+libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
 includedir=${prefix}/include
 
 Name: VCSM

