Преглед на файлове

Fix build system to find 32-bit readline package correctly on Debian.

Yao Wei Tjong 姚伟忠 преди 10 години
родител
ревизия
d267c5ee3c
променени са 3 файла, в които са добавени 22 реда и са изтрити 15 реда
  1. 11 11
      CMake/Modules/FindPulseAudio.cmake
  2. 9 2
      CMake/Modules/FindReadline.cmake
  3. 2 2
      Source/ThirdParty/SDL/CMakeLists.txt

+ 11 - 11
CMake/Modules/FindPulseAudio.cmake

@@ -23,21 +23,21 @@
 # Find PulseAudio development library
 #
 #  PULSEAUDIO_FOUND
-#  PA_INCLUDE_DIRS
-#  PA_LIBRARIES
-#  PA_VERSION
+#  PULSEAUDIO_INCLUDE_DIRS
+#  PULSEAUDIO_LIBRARIES
+#  PULSEAUDIO_VERSION
 #
 
-find_path (PA_INCLUDE_DIRS NAMES pulse/pulseaudio.h DOC "PulseAudio include directory")
-find_library (PA_LIBRARIES NAMES pulse-simple DOC "PulseAudio library")
+find_path (PULSEAUDIO_INCLUDE_DIRS NAMES pulse/pulseaudio.h DOC "PulseAudio include directory")
+find_library (PULSEAUDIO_LIBRARIES NAMES pulse-simple DOC "PulseAudio library")
 
-if (NOT PA_VERSION AND PA_INCLUDE_DIRS AND EXISTS ${PA_INCLUDE_DIRS}/pulse/version.h)   # Only do this once
-    file (STRINGS "${PA_INCLUDE_DIRS}/pulse/version.h" PA_VERSION REGEX "^.*pa_get_headers_version.+\"[^\"]*\".*$")
-    string (REGEX REPLACE "^.*pa_get_headers_version.+\"([^\"]*)\".*$" \\1 PA_VERSION "${PA_VERSION}")      # Stringify to guard against empty variable
-    set (PA_VERSION "${PA_VERSION}" CACHE INTERNAL "PulseAudio version")
+if (NOT PULSEAUDIO_VERSION AND PULSEAUDIO_INCLUDE_DIRS AND EXISTS ${PULSEAUDIO_INCLUDE_DIRS}/pulse/version.h)   # Only do this once
+    file (STRINGS "${PULSEAUDIO_INCLUDE_DIRS}/pulse/version.h" PULSEAUDIO_VERSION REGEX "^.*pa_get_headers_version.+\"[^\"]*\".*$")
+    string (REGEX REPLACE "^.*pa_get_headers_version.+\"([^\"]*)\".*$" \\1 PULSEAUDIO_VERSION "${PULSEAUDIO_VERSION}")      # Stringify to guard against empty variable
+    set (PULSEAUDIO_VERSION "${PULSEAUDIO_VERSION}" CACHE INTERNAL "PulseAudio version")
 endif ()
 
 include (FindPackageHandleStandardArgs)
-find_package_handle_standard_args (PulseAudio REQUIRED_VARS PA_LIBRARIES PA_INCLUDE_DIRS VERSION_VAR PA_VERSION FAIL_MESSAGE "Could NOT find PulseAudio development library")
+find_package_handle_standard_args (PulseAudio REQUIRED_VARS PULSEAUDIO_LIBRARIES PULSEAUDIO_INCLUDE_DIRS VERSION_VAR PULSEAUDIO_VERSION FAIL_MESSAGE "Could NOT find PulseAudio development library")
 
-mark_as_advanced (PA_INCLUDE_DIRS PA_LIBRARIES)
+mark_as_advanced (PULSEAUDIO_INCLUDE_DIRS PULSEAUDIO_LIBRARIES)

+ 9 - 2
CMake/Modules/FindReadline.cmake

@@ -28,12 +28,19 @@
 #
 
 if (APPLE AND NOT READLINE_INCLUDE_DIRS AND NOT READLINE_LIBRARIES)
-    # Assuming GNU Readline development library is installed using Homebrew (keg-only)
+    # Assuming GNU Readline development library is installed using Homebrew (keg-only - prebuilt universal binary)
     execute_process (COMMAND find /usr/local/Cellar/readline -type d -name include OUTPUT_VARIABLE INC_HINTS ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
     execute_process (COMMAND find /usr/local/Cellar/readline -type d -name lib OUTPUT_VARIABLE LIB_HINTS ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+elseif (URHO3D_DEFAULT_64BIT AND NOT URHO3D_64BIT)
+    # To cater for 32-bit build on 64-bit host system using Debian-based distros; no special handling required for Redhat-based distros but no harm done in doing below
+    set (LIB_PATHS PATHS /usr/lib32)
 endif ()
 find_path (READLINE_INCLUDE_DIRS NAMES readline.h HINTS ${INC_HINTS} PATH_SUFFIXES readline DOC "Readline include directory")
-find_library (READLINE_LIBRARIES NAMES readline HINTS ${LIB_HINTS} DOC "Readline library")
+find_library (READLINE_LIBRARIES NAMES readline HINTS ${LIB_HINTS} ${LIB_PATHS} DOC "Readline library")
+if (NOT APPLE AND URHO3D_DEFAULT_64BIT AND NOT URHO3D_64BIT AND READLINE_LIBRARIES MATCHES 64)
+    unset (READLINE_LIBRARIES CACHE)    # Nullify the search result if the ABI is not matched
+    unset (READLINE_LIBRARIES)
+endif ()
 
 include (FindPackageHandleStandardArgs)
 find_package_handle_standard_args (Readline REQUIRED_VARS READLINE_LIBRARIES READLINE_INCLUDE_DIRS FAIL_MESSAGE "Could NOT find Readline development library")

+ 2 - 2
Source/ThirdParty/SDL/CMakeLists.txt

@@ -129,8 +129,8 @@ else ()
 
     find_package (PulseAudio)
     if (PULSEAUDIO_FOUND)
-      include_directories (${PA_INCLUDE_DIRS})
-      get_filename_component (PA_SIMPLE ${PA_LIBRARIES} NAME)
+      include_directories (${PULSEAUDIO_INCLUDE_DIRS})
+      get_filename_component (PA_SIMPLE ${PULSEAUDIO_LIBRARIES} NAME)
       add_definitions (-DSDL_AUDIO_DRIVER_PULSEAUDIO=1 -DSDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC="${PA_SIMPLE}")
       file (GLOB PULSEAUDIO_SOURCES src/audio/pulseaudio/*.c)
     endif ()