find-intl.patch 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. diff --git a/CMakeLists.txt b/CMakeLists.txt
  2. index 986b594..77e6d2b 100644
  3. --- a/CMakeLists.txt
  4. +++ b/CMakeLists.txt
  5. @@ -356,6 +356,8 @@ endif ( WIN32 )
  6. # Check for threads and math
  7. find_package ( Threads REQUIRED )
  8. +unset ( HAS_LIBM CACHE )
  9. +unset ( MATH_LIBRARY CACHE )
  10. find_library ( HAS_LIBM NAMES "m" )
  11. if ( HAS_LIBM )
  12. set ( MATH_LIBRARY "m" )
  13. diff --git a/cmake_admin/FindFLAC.cmake b/cmake_admin/FindFLAC.cmake
  14. deleted file mode 100644
  15. index 2de2f41..0000000
  16. --- a/cmake_admin/FindFLAC.cmake
  17. +++ /dev/null
  18. @@ -1,106 +0,0 @@
  19. -#[=======================================================================[.rst:
  20. -FindFLAC
  21. --------
  22. -
  23. -Finds the FLAC library.
  24. -
  25. -Imported Targets
  26. -^^^^^^^^^^^^^^^^
  27. -
  28. -This module provides the following imported targets, if found:
  29. -
  30. -``FLAC::FLAC``
  31. - The FLAC C library.
  32. -``FLAC::FLAC++``
  33. - The FLAC C++ library.
  34. -
  35. -Result Variables
  36. -^^^^^^^^^^^^^^^^
  37. -
  38. -This will define the following variables:
  39. -
  40. -``FLAC_FOUND``
  41. - True if both libraries were found.
  42. -``FLAC_FLAC_FOUND``
  43. - True if the C library was found.
  44. -``FLAC_FLAC++_FOUND``
  45. - True if the C++ library was found..
  46. -
  47. -#]=======================================================================]
  48. -
  49. -# Use pkg-config if available
  50. -find_package(PkgConfig QUIET)
  51. -pkg_check_modules(PC_FLAC QUIET flac)
  52. -pkg_check_modules(PC_FLAC++ QUIET flac++)
  53. -
  54. -# Find the headers and libraries
  55. -find_path(
  56. - FLAC_INCLUDE_DIR
  57. - NAMES "FLAC/all.h"
  58. - HINTS "PC_FLAC_INCLUDEDIR")
  59. -
  60. -find_path(
  61. - FLAC++_INCLUDE_DIR
  62. - NAMES "FLAC++/all.h"
  63. - HINTS "PC_FLAC++_INCLUDEDIR")
  64. -
  65. -find_library(
  66. - FLAC_LIBRARY
  67. - NAMES "FLAC"
  68. - HINTS "${PC_FLAC_LIBDIR}")
  69. -
  70. -find_library(
  71. - FLAC++_LIBRARY
  72. - NAMES "FLAC++"
  73. - HINTS "${PC_FLAC++_LIBDIR}")
  74. -
  75. -# Handle transitive dependencies
  76. -if(PC_FLAC_FOUND)
  77. - get_target_properties_from_pkg_config("${FLAC_LIBRARY}" "PC_FLAC" "_flac")
  78. -else()
  79. - if(NOT TARGET "Ogg::ogg")
  80. - find_package(Ogg QUIET)
  81. - endif()
  82. - set(_flac_link_libraries "Ogg::ogg" ${MATH_LIBRARY})
  83. -endif()
  84. -
  85. -if(PC_FLAC++_FOUND)
  86. - get_target_properties_from_pkg_config("${FLAC++_LIBRARY}" "PC_FLAC++"
  87. - "_flac++")
  88. -else()
  89. - set(_flac++_link_libraries "FLAC::FLAC")
  90. -endif()
  91. -
  92. -# Forward the result to CMake
  93. -include(FindPackageHandleStandardArgs)
  94. -find_package_handle_standard_args(
  95. - FLAC REQUIRED_VARS "FLAC_LIBRARY" "FLAC_INCLUDE_DIR" "FLAC++_LIBRARY"
  96. - "FLAC++_INCLUDE_DIR")
  97. -
  98. -# Create the target
  99. -if(FLAC_FOUND AND NOT TARGET FLAC::FLAC)
  100. - add_library(FLAC::FLAC UNKNOWN IMPORTED)
  101. - set_target_properties(
  102. - FLAC::FLAC
  103. - PROPERTIES IMPORTED_LOCATION "${FLAC_LIBRARY}"
  104. - INTERFACE_COMPILE_OPTIONS "${_flac_compile_options}"
  105. - INTERFACE_INCLUDE_DIRECTORIES "${FLAC_INCLUDE_DIR}"
  106. - INTERFACE_LINK_LIBRARIES "${_flac_link_libraries}"
  107. - INTERFACE_LINK_DIRECTORIES "${_flac_link_directories}")
  108. - set(FLAC_FLAC_FOUND TRUE)
  109. -endif()
  110. -
  111. -if(FLAC_FOUND AND NOT TARGET FLAC::FLAC++)
  112. - add_library(FLAC::FLAC++ UNKNOWN IMPORTED)
  113. - set_target_properties(
  114. - FLAC::FLAC++
  115. - PROPERTIES IMPORTED_LOCATION "${FLAC++_LIBRARY}"
  116. - INTERFACE_COMPILE_OPTIONS "${_flac++_compile_options}"
  117. - INTERFACE_INCLUDE_DIRECTORIES "${FLAC++_INCLUDE_DIR}"
  118. - INTERFACE_LINK_LIBRARIES "${_flac++_link_libraries}"
  119. - INTERFACE_LINK_DIRECTORIES "${_flac++_link_directories}")
  120. - set(FLAC_FLAC++_FOUND TRUE)
  121. -endif()
  122. -
  123. -mark_as_advanced(FLAC_LIBRARY FLAC_INCLUDE_DIR FLAC++_LIBRARY
  124. - FLAC++_INCLUDE_DIR)
  125. diff --git a/cmake_admin/FindGLib2.cmake b/cmake_admin/FindGLib2.cmake
  126. index f6fa6f1..b7821bf 100644
  127. --- a/cmake_admin/FindGLib2.cmake
  128. +++ b/cmake_admin/FindGLib2.cmake
  129. @@ -64,6 +64,14 @@ find_library(
  130. NAMES "gobject-2.0"
  131. HINTS "${PC_GOBJECT2_LIBDIR}")
  132. +find_library(
  133. + Intl_LIBRARY
  134. + NAMES "intl")
  135. +
  136. +find_library(
  137. + Pcre_LIBRARY
  138. + NAMES "pcre")
  139. +
  140. # GLib stores its config in lib/glib-2.0/include
  141. get_filename_component(_glib2_libdir "${GLib2_glib-2_LIBRARY}" PATH)
  142. find_path(
  143. @@ -102,12 +110,15 @@ find_package_handle_standard_args(
  144. "GLib2_INCLUDE_DIRS"
  145. VERSION_VAR "GLib2_VERSION")
  146. +get_filename_component(_intl_path "${Intl_LIBRARY}" DIRECTORY)
  147. +
  148. # Create the targets
  149. if(GLib2_glib-2_LIBRARY AND NOT TARGET GLib2::glib-2)
  150. # Handle transitive dependencies
  151. if(PC_GLIB2_FOUND)
  152. get_target_properties_from_pkg_config("${GLib2_glib-2_LIBRARY}" "PC_GLIB2"
  153. "_glib2")
  154. + list(APPEND _glib2_link_directories "${_intl_path}")
  155. else()
  156. find_package(Intl QUIET)
  157. find_package(Iconv QUIET)
  158. @@ -118,36 +129,9 @@ if(GLib2_glib-2_LIBRARY AND NOT TARGET GLib2::glib-2)
  159. list(APPEND _glib2_link_libraries "Threads::Threads")
  160. endif()
  161. list(APPEND _glib2_link_libraries ${MATH_LIBRARY})
  162. -
  163. - # Glib can link to either PCRE 1 or 2
  164. - find_library(
  165. - _pcre2_8bit_library
  166. - NAMES "pcre2-8"
  167. - HINTS "${PC_GLIB2_LIBDIR}")
  168. - if(_pcre2_8bit_library)
  169. - include(CheckCSourceCompiles)
  170. - set(_backup_includes ${CMAKE_REQUIRED_INCLUDES})
  171. - set(_backup_libraries ${CMAKE_REQUIRED_LIBRARIES})
  172. - set(_backup_libdir ${CMAKE_REQUIRED_LIBRARIES})
  173. - set(CMAKE_REQUIRED_INCLUDES "${GLib2_INCLUDE_DIRS}")
  174. - set(CMAKE_REQUIRED_LIBRARIES
  175. - "${GLib2_glib-2_LIBRARY}" "${_glib2_link_libraries}"
  176. - "${_pcre2_8bit_library}")
  177. - check_c_source_compiles(
  178. - "#include <glib.h>
  179. - int main(){
  180. - g_regex_error_quark();
  181. - }"
  182. - GLIB2_USES_PCRE2)
  183. - set(CMAKE_REQUIRED_INCLUDES ${_backup_includes})
  184. - set(CMAKE_REQUIRED_LIBRARIES ${_backup_libraries})
  185. - endif()
  186. - if(GLIB2_USES_PCRE2)
  187. - list(APPEND _glib2_link_libraries "${_pcre2_8bit_library}")
  188. - else()
  189. - list(APPEND _glib2_link_libraries "pcre")
  190. - endif()
  191. endif()
  192. + get_filename_component(_pcre_path "${Pcre_LIBRARY}" DIRECTORY)
  193. + list(APPEND _glib2_link_directories "${_pcre_path}")
  194. # pkg_check_modules consider these as LDFLAGS_OTHER rather instead of
  195. # libraries
  196. @@ -172,6 +156,7 @@ if(GLib2_gthread-2_LIBRARY AND NOT TARGET GLib2::gthread-2)
  197. if(PC_GTHREAD2_FOUND)
  198. get_target_properties_from_pkg_config("${GLib2_gthread-2_LIBRARY}"
  199. "PC_GTHREAD2" "_gthread2")
  200. + list(APPEND _glib2_link_directories "${_intl_path}")
  201. else()
  202. set(_gthread2_link_libraries "Threads::Threads" "GLib2::glib-2")
  203. endif()
  204. @@ -191,6 +176,7 @@ if(GLib2_gmodule-2_LIBRARY AND NOT TARGET GLib2::gmodule-2)
  205. if(PC_GMODULE2_FOUND)
  206. get_target_properties_from_pkg_config("${GLib2_gmodule-2_LIBRARY}"
  207. "PC_GMODULE2" "_gmodule2")
  208. + list(APPEND _glib2_link_directories "${_intl_path}")
  209. else()
  210. set(_gmodule2_link_libraries "GLib2::glib-2")
  211. endif()
  212. @@ -210,6 +196,7 @@ if(GLib2_gobject-2_LIBRARY AND NOT TARGET GLib2::gobject-2)
  213. if(PC_GOBJECT2_FOUND)
  214. get_target_properties_from_pkg_config("${GLib2_gobject-2_LIBRARY}"
  215. "PC_OBJECT2" "_gobject2")
  216. + list(APPEND _glib2_link_directories "${_intl_path}")
  217. else()
  218. find_package(libffi QUIET)
  219. set(_gobject2_link_libraries "libffi" "GLib2::glib-2")
  220. diff --git a/cmake_admin/FindSndFile.cmake b/cmake_admin/FindSndFile.cmake
  221. deleted file mode 100644
  222. index d77333b..0000000
  223. --- a/cmake_admin/FindSndFile.cmake
  224. +++ /dev/null
  225. @@ -1,180 +0,0 @@
  226. -#[=======================================================================[.rst:
  227. -FindSndFile
  228. --------
  229. -
  230. -Finds the SndFile library.
  231. -
  232. -Imported Targets
  233. -^^^^^^^^^^^^^^^^
  234. -
  235. -This module provides the following imported targets, if found:
  236. -
  237. -``SndFile::sndfile``
  238. - The SndFile library
  239. -
  240. -Result Variables
  241. -^^^^^^^^^^^^^^^^
  242. -
  243. -This will define the following variables:
  244. -
  245. -``SndFile_FOUND``
  246. - True if the system has the SndFile library.
  247. -``SndFile_VERSION``
  248. - The version of the SndFile library which was found.
  249. -``SndFile_WITH_EXTERNAL_LIBS``
  250. - True if the library was built with Xiph codecs.
  251. -
  252. -For compatibility with upstream, the following variables are also set:
  253. -
  254. -``SndFile_WITH_MPEG``
  255. -``SndFile_VERSION_MAJOR``
  256. -``SndFile_VERSION_MINOR``
  257. -``SndFile_VERSION_PATCH``
  258. -``SndFile_LIBRARY``
  259. -``SndFile_LIBRARIES``
  260. -``SNDFILE_LIBRARY``
  261. -``SNDFILE_LIBRARIES``
  262. -``SNDFILE_INCLUDE_DIR``
  263. -
  264. -#]=======================================================================]
  265. -
  266. -# Use pkg-config if available
  267. -find_package(PkgConfig QUIET)
  268. -pkg_check_modules(PC_SNDFILE QUIET sndfile)
  269. -
  270. -# Find the headers and libraries
  271. -find_path(
  272. - SndFile_INCLUDE_DIR
  273. - NAMES "sndfile.h"
  274. - HINTS "${PC_SNDFILE_INCLUDEDIR}")
  275. -
  276. -find_library(
  277. - _sndfile_library
  278. - NAMES "sndfile"
  279. - HINTS "${PC_SNDFILE_LIBDIR}")
  280. -
  281. -# Get version from pkg-config or read the config header
  282. -if(PC_SNDFILE_VERSION)
  283. - set(SndFile_VERSION "${PC_SNDFILE_VERSION}")
  284. - string(REPLACE "." ";" _sndfile_version_list "${SndFile_VERSION}")
  285. - list(GET _sndfile_version_list 0 SndFile_VERSION_MAJOR)
  286. - list(GET _sndfile_version_list 1 SndFile_VERSION_MINOR)
  287. - list(GET _sndfile_version_list 2 SndFile_VERSION_PATCH)
  288. -elseif(SndFile_INCLUDE_DIR)
  289. - file(READ "${SndFile_INCLUDE_DIR}/sndfile.h" _sndfile_h)
  290. - if("#define SNDFILE_1" MATCHES _snfile_h)
  291. - set(SndFile_VERSION "1")
  292. - set(SndFile_VERSION_MAJOR "1")
  293. - endif()
  294. -endif()
  295. -
  296. -# Check the features SndFile was built with
  297. -if(PC_SNDFILE_FOUND)
  298. - if("vorbis" IN_LIST PC_SNDFILE_STATIC_LIBRARIES)
  299. - set(SndFile_WITH_EXTERNAL_LIBS TRUE)
  300. - endif()
  301. - if("mpg123" IN_LIST PC_SNDFILE_STATIC_LIBRARIES)
  302. - set(SndFile_WITH_MPEG TRUE)
  303. - endif()
  304. -elseif(_sndfile_library)
  305. - # sndfile may need any of these libraries
  306. - find_package(Ogg 1.3 QUIET)
  307. - find_package(Vorbis QUIET)
  308. - find_package(FLAC QUIET)
  309. - find_package(Opus QUIET)
  310. - find_package(mp3lame QUIET)
  311. - find_package(mpg123 QUIET)
  312. -
  313. - if(NOT CMAKE_CROSSCOMPILING)
  314. - include(CheckSourceRuns)
  315. - set(_backup_includes ${CMAKE_REQUIRED_INCLUDES})
  316. - set(_backup_libraries ${CMAKE_REQUIRED_LIBRARIES})
  317. - set(CMAKE_REQUIRED_INCLUDES "${SndFile_INCLUDE_DIR}")
  318. - set(CMAKE_REQUIRED_LIBRARIES "${_sndfile_library}")
  319. -
  320. - set(_optional_libs "MPG123::libmpg123" "mp3lame::mp3lame" "FLAC::FLAC"
  321. - "Opus::opus" "Vorbis::vorbisenc" "Ogg::ogg")
  322. - foreach(_target ${_optional_libs})
  323. - if(TARGET "${_target}")
  324. - list(APPEND CMAKE_REQUIRED_LIBRARIES "${_target}")
  325. - endif()
  326. - endforeach()
  327. -
  328. - check_source_runs(
  329. - C
  330. - "#include <stdlib.h>
  331. -#include <sndfile.h>
  332. -int main() {
  333. - SF_FORMAT_INFO info = {SF_FORMAT_VORBIS};
  334. - sf_command(NULL, SFC_GET_FORMAT_INFO, &info, sizeof info);
  335. - return info.name != NULL ? EXIT_SUCCESS : EXIT_FAILURE;
  336. -}"
  337. - SNDFILE_SUPPORTS_VORBIS)
  338. -
  339. - check_source_runs(
  340. - C
  341. - "#include <stdlib.h>
  342. -#include <sndfile.h>
  343. -int main() {
  344. - SF_FORMAT_INFO info = {SF_FORMAT_MPEG_LAYER_III};
  345. - sf_command(NULL, SFC_GET_FORMAT_INFO, &info, sizeof info);
  346. - return info.name != NULL ? EXIT_SUCCESS : EXIT_FAILURE;
  347. -}"
  348. - SNDFILE_SUPPORTS_MPEG)
  349. -
  350. - set(SndFile_WITH_EXTERNAL_LIBS ${SNDFILE_SUPPORTS_VORBIS})
  351. - set(SndFile_WITH_MPEG ${SNDFILE_SUPPORTS_MPEG})
  352. - set(CMAKE_REQUIRED_INCLUDES ${_backup_includes})
  353. - set(CMAKE_REQUIRED_LIBRARIES ${_backup_libraries})
  354. - else()
  355. - message(
  356. - STATUS
  357. - "Cross-compiling without pkg-config - cannot check for external libraries."
  358. - "If you have the upstream CMake config set CMAKE_FIND_PACKAGE_PREFER_CONFIG to true for accurate results."
  359. - )
  360. - set(SndFile_WITH_EXTERNAL_LIBS FALSE)
  361. - set(SndFile_WITH_MPEG FALSE)
  362. - endif()
  363. -endif()
  364. -
  365. -# Handle transitive dependencies
  366. -if(PC_SNDFILE_FOUND)
  367. - get_target_properties_from_pkg_config("${_sndfile_library}" "PC_SNDFILE"
  368. - "_sndfile")
  369. -else()
  370. - if(SndFile_WITH_EXTERNAL_LIBS)
  371. - list(APPEND _sndfile_link_libraries "FLAC::FLAC" "Opus::opus"
  372. - "Vorbis::vorbisenc" "Ogg::ogg")
  373. - endif()
  374. - if(SndFile_WITH_MPEG)
  375. - list(APPEND _sndfile_link_libraries "MPG123::libmpg123" "mp3lame::mp3lame")
  376. - endif()
  377. -endif()
  378. -
  379. -# Forward the result to CMake
  380. -include(FindPackageHandleStandardArgs)
  381. -find_package_handle_standard_args(
  382. - SndFile
  383. - REQUIRED_VARS "_sndfile_library" "SndFile_INCLUDE_DIR"
  384. - VERSION_VAR "SndFile_VERSION")
  385. -
  386. -if(SndFile_FOUND AND NOT TARGET SndFile::sndfile)
  387. - add_library(SndFile::sndfile UNKNOWN IMPORTED)
  388. - set_target_properties(
  389. - SndFile::sndfile
  390. - PROPERTIES IMPORTED_LOCATION "${_sndfile_library}"
  391. - INTERFACE_COMPILE_OPTIONS "${_sndfile_compile_options}"
  392. - INTERFACE_INCLUDE_DIRECTORIES "${SndFile_INCLUDE_DIR}"
  393. - INTERFACE_LINK_LIBRARIES "${_sndfile_link_libraries}"
  394. - INTERFACE_LINK_DIRECTORIES "${_sndfile_link_directories}")
  395. -
  396. - # Set additional variables for compatibility with upstream config
  397. - set(SNDFILE_FOUND TRUE)
  398. - set(SndFile_LIBRARY SndFile::sndfile)
  399. - set(SndFile_LIBRARIES SndFile::sndfile)
  400. - set(SNDFILE_LIBRARY SndFile::sndfile)
  401. - set(SNDFILE_LIBRARIES SndFile::sndfile)
  402. - set(SNDFILE_INCLUDE_DIR "${SndFile_INCLUDE_DIR}")
  403. -endif()
  404. -
  405. -mark_as_advanced(_sndfile_library)