From e4e2b34a4cda80ec0d5abe7ca833baa745264a11 Mon Sep 17 00:00:00 2001
From: James Turner <zakalawe@mac.com>
Date: Sat, 22 Aug 2020 21:33:47 +0100
Subject: [PATCH] FGCom OpenAL CMake fixes

Ensure we detect OpenAL the way IAXClient expects, and set it up as
a dependency of IAXClient, not FGCom.
---
 CMakeModules/ConfigureMsvc3rdParty.cmake |  4 --
 CMakeModules/FindOpenAL.cmake            | 48 ++++++++++++++++++++++++
 utils/fgcom/CMakeLists.txt               |  2 -
 3 files changed, 48 insertions(+), 6 deletions(-)
 create mode 100644 CMakeModules/FindOpenAL.cmake

diff --git a/CMakeModules/ConfigureMsvc3rdParty.cmake b/CMakeModules/ConfigureMsvc3rdParty.cmake
index ced078814..0720ab37b 100644
--- a/CMakeModules/ConfigureMsvc3rdParty.cmake
+++ b/CMakeModules/ConfigureMsvc3rdParty.cmake
@@ -45,9 +45,6 @@ if (MSVC AND MSVC_3RDPARTY_ROOT)
 	    	set( BOOST_LIB lib )
     endif (CMAKE_CL_64)
 
-    set (CMAKE_LIBRARY_PATH ${MSVC_3RDPARTY_ROOT}/${MSVC_3RDPARTY_DIR}/lib ${MSVC_3RDPARTY_ROOT}/install/${OSG_MSVC}/OpenScenegraph/lib ${MSVC_3RDPARTY_ROOT}/install/${OSG_MSVC}/OpenRTI/lib ${MSVC_3RDPARTY_ROOT}/install/${OSG_MSVC}/SimGear/lib  )
-    set (CMAKE_INCLUDE_PATH ${MSVC_3RDPARTY_ROOT}/${MSVC_3RDPARTY_DIR}/include ${MSVC_3RDPARTY_ROOT}/install/${OSG_MSVC}/OpenScenegraph/include ${MSVC_3RDPARTY_ROOT}/install/${OSG_MSVC}/OpenRTI/include ${MSVC_3RDPARTY_ROOT}/install/${OSG_MSVC}/SimGear/include)
-
     # ensure 3rdparty/lib/cmake is searched
     list(APPEND CMAKE_PREFIX_PATH ${MSVC_3RDPARTY_ROOT}/${MSVC_3RDPARTY_DIR})
 
@@ -60,5 +57,4 @@ if (MSVC AND MSVC_3RDPARTY_ROOT)
         set(BOOST_INCLUDEDIR ${MSVC_ROOT_PARENT_DIR})
         message(STATUS "BOOST_INCLUDEDIR is ${BOOST_INCLUDEDIR}")
       endif()
-
 endif (MSVC AND MSVC_3RDPARTY_ROOT)
diff --git a/CMakeModules/FindOpenAL.cmake b/CMakeModules/FindOpenAL.cmake
new file mode 100644
index 000000000..1c22eb703
--- /dev/null
+++ b/CMakeModules/FindOpenAL.cmake
@@ -0,0 +1,48 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindOpenAL
+----------
+
+
+Finds Open Audio Library (OpenAL).
+This module defines ``OPENAL_LIBRARY OPENAL_FOUND``, if
+false, do not try to link to OpenAL ``OPENAL_INCLUDE_DIR``, where to find
+the headers.
+
+``$OPENALDIR`` is an environment variable that would correspond to the
+``./configure --prefix=$OPENALDIR`` used in building OpenAL.
+
+Created by Eric Wing.  This was influenced by the ``FindSDL.cmake``
+module.
+#]=======================================================================]
+
+# Modifed for FlightGear by James Turner
+# We want to use the 'parented' directories here, unlike the standard CMake version
+# of this.
+
+if (OPENAL_LIBRARY AND OPENAL_INCLUDE_DIR)
+  # already set, do nothing
+else()
+  find_path(OPENAL_INCLUDE_DIR OpenAL/al.h AL/al.h
+    HINTS
+      ENV OPENALDIR
+    PATH_SUFFIXES include
+    PATHS
+    /opt
+  )
+
+  find_library(OPENAL_LIBRARY
+    NAMES OpenAL al openal OpenAL32
+    HINTS
+      ENV OPENALDIR
+    PATH_SUFFIXES libx32 lib64 lib libs64 libs 
+    PATHS
+    /opt
+  )
+
+  find_package_handle_standard_args(OpenAL  DEFAULT_MSG  OPENAL_LIBRARY OPENAL_INCLUDE_DIR)
+
+  mark_as_advanced(OPENAL_LIBRARY OPENAL_INCLUDE_DIR)
+endif()
diff --git a/utils/fgcom/CMakeLists.txt b/utils/fgcom/CMakeLists.txt
index 8948647a1..99da84e22 100644
--- a/utils/fgcom/CMakeLists.txt
+++ b/utils/fgcom/CMakeLists.txt
@@ -1,7 +1,5 @@
 set(name fgcom)
 
-find_package(OpenAL REQUIRED)
-
 # Copy positions.txt content in const char* _positionsData[];
 file(READ utils/positions.txt POSITIONS_DATA)
 string(REGEX REPLACE "\n" "\"%