configure 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. #!/bin/sh
  2. VERSION=1.2.2
  3. VERSION_FULL=${VERSION}$(./version.sh)
  4. PREFIX="${PREFIX:-/usr/local}"
  5. BINDIR="${BINDIR:-${PREFIX}/bin}"
  6. MANDIR="${MANDIR:-${PREFIX}/share/man}"
  7. DOCDIR="${DOCDIR:-${PREFIX}/share/doc/badwolf-${VERSION}}"
  8. DATADIR="${DATADIR:-${PREFIX}/share/badwolf}"
  9. APPSDIR="${APPSDIR:-${PREFIX}/share/applications}"
  10. PKGCONFIG="${PKGCONFIG:-pkg-config}"
  11. MSGFMT="${MSGFMT:-msgfmt}"
  12. INKSCAPE="${INKSCAPE:-inkscape}"
  13. CC="${CC:-cc}"
  14. CFLAGS="${CFLAGS:--g -O2 -pie -fPIE} -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wall -Wextra -Wconversion -Wsign-conversion -Werror=implicit-function-declaration -Werror=implicit-int -Werror=vla ${EXTRA_CFLAGS}"
  15. MANDOC="mandoc"
  16. DEPS="gtk+-3.0 libxml-2.0"
  17. is_ok() {
  18. status="$?"
  19. if test $status -eq 0; then
  20. printf " OK\n"
  21. else
  22. printf " FAIL\n"
  23. fi
  24. return $status
  25. }
  26. required() {
  27. is_ok || exit 1
  28. }
  29. pkg_config_check() {
  30. printf 'Checking: %s %s ...' "${PKGCONFIG}" "$*"
  31. "${PKGCONFIG}" "$@"
  32. is_ok
  33. }
  34. printf 'Checking %s command existance ...' "${PKGCONFIG}"
  35. command -v "${PKGCONFIG}" >/dev/null ; required
  36. printf 'Checking %s command existance ...' "${CC}"
  37. command -v "${CC}" >/dev/null ; required
  38. printf 'Checking %s command existance ...' "${MANDOC}"
  39. if command -v "${CC}" >/dev/null ; is_ok
  40. then
  41. :
  42. else
  43. MANDOC="true"
  44. fi
  45. for dep in ${DEPS}
  46. do
  47. pkg_config_check --exists "$dep" || exit 1
  48. done
  49. case "${WITH_WEBKITGTK}n" in
  50. 4.1n)
  51. pkg_config_check --atleast-version=2.32.0 webkit2gtk-4.1 || exit 1
  52. DEPS="${DEPS} webkit2gtk-4.1"
  53. ;;
  54. 4.0n)
  55. pkg_config_check --atleast-version=2.32.0 webkit2gtk-4.0 || exit 1
  56. DEPS="${DEPS} webkit2gtk-4.0"
  57. ;;
  58. n)
  59. echo "notice: Packagers should consider setting the ABI version (4.0 or 4.1) in WITH_WEBKITGTK" >&2
  60. if pkg_config_check --atleast-version=2.32.0 webkit2gtk-4.1
  61. then
  62. DEPS="${DEPS} webkit2gtk-4.1"
  63. else
  64. pkg_config_check --atleast-version=2.32.0 webkit2gtk-4.0 || exit 1
  65. DEPS="${DEPS} webkit2gtk-4.0"
  66. fi
  67. ;;
  68. *)
  69. echo "error: invalid webkit2gtk version in WITH_WEBKITGTK environment variable, must be 4.0 or 4.1" >&2
  70. exit 1
  71. ;;
  72. esac
  73. case "${WITH_URI_PARSER}n" in
  74. gurin)
  75. echo "URI parser selected: GUri from glib-2.0"
  76. pkg_config_check --atleast-version=2.66.0 glib-2.0 || exit 1
  77. DEPS="${DEPS} glib-2.0"
  78. ;;
  79. libsoup2n)
  80. echo "URI parser selected: libsoup-2.4"
  81. pkg_config_check libsoup-2.4 || exit 1
  82. DEPS="${DEPS} libsoup-2.4"
  83. CFLAGS="${CFLAGS} -DUSE_LIBSOUP2"
  84. if echo "${DEPS}" | grep -q 'webkit2gtk-4.1'
  85. then
  86. echo 'warning: libsoup2 selected while WebKitGTK with libsoup3 API is used' >&2
  87. fi
  88. ;;
  89. n)
  90. echo "notice: Packagers should consider setting the URI parsing library (guri or libsoup2) in WITH_URI_PARSER" >&2
  91. if echo "${DEPS}" | grep -q 'webkit2gtk-4.0'
  92. then
  93. pkg_config_check libsoup-2.4 || exit 1
  94. echo "URI parser selected: libsoup-2.4"
  95. DEPS="${DEPS} libsoup-2.4"
  96. CFLAGS="${CFLAGS} -DUSE_LIBSOUP2"
  97. else
  98. pkg_config_check --atleast-version="${min_glib_guri}" glib-2.0 || exit 1
  99. echo "URI parser selected: GUri from glib-2.0"
  100. DEPS="${DEPS} glib-2.0"
  101. fi
  102. ;;
  103. *)
  104. echo "error: invalid uri provider in WITH_URI_PARSER environment variable, must be guri or libsoup2" >&2
  105. ;;
  106. esac
  107. get_cflags() { "${PKGCONFIG}" --cflags "${DEPS}"; }
  108. DEPS_cflags="$(get_cflags)"
  109. get_libs() { "${PKGCONFIG}" --libs "${DEPS}"; }
  110. DEPS_libs="$(get_libs)"
  111. ICON_SIZES="$(for i in 24 32 48 64 128 256; do printf 'icons/hicolor/%sx%s/apps/badwolf.png ' $i $i ; done)"
  112. printf 'Writing to config.mk ...'
  113. cat >config.mk <<EOF
  114. # Autogenerated by ./configure
  115. PACKAGE = Badwolf
  116. VERSION = ${VERSION}
  117. VERSION_FULL = ${VERSION_FULL}
  118. PREFIX = ${PREFIX}
  119. BINDIR = ${BINDIR}
  120. MANDIR = ${MANDIR}
  121. DOCDIR = ${DOCDIR}
  122. DATADIR = ${DATADIR}
  123. APPSDIR = ${APPSDIR}
  124. PKGCONFIG = ${PKGCONFIG}
  125. CC = ${CC}
  126. INKSCAPE = ${INKSCAPE}
  127. MSGFMT = ${MSGFMT}
  128. DBG = ${DBG}
  129. MANDOC = ${MANDOC}
  130. CFLAGS = ${CFLAGS} -DDATADIR=\"\${DATADIR}\" -DPACKAGE=\"\${PACKAGE}\" -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L -DVERSION=\"\${VERSION_FULL}\" ${DEPS_cflags}
  131. LIBS = ${DEPS_libs}
  132. ICON_SIZES = ${ICON_SIZES}
  133. EOF
  134. is_ok
  135. echo 'Done, you can now run make'