diff options
Diffstat (limited to 'configure.ac')
| -rw-r--r-- | configure.ac | 103 |
1 files changed, 66 insertions, 37 deletions
diff --git a/configure.ac b/configure.ac index aae39c3..85c5752 100644 --- a/configure.ac +++ b/configure.ac @@ -5,62 +5,91 @@ AC_CONFIG_HEADERS([src/config.h]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([foreign subdir-objects]) -AC_CONFIG_FILES([Makefile src/Makefile]) +AC_CONFIG_FILES([Makefile]) AC_REQUIRE_AUX_FILE([tap-driver.sh]) AC_PROG_CXX +AC_PROG_AWK +AC_PROG_INSTALL +AC_PROG_MAKE_SET +AC_PROG_MKDIR_P + +AC_CHECK_HEADERS([stdint.h]) + +AC_CHECK_HEADER_STDBOOL +AC_TYPE_INT16_T +AC_TYPE_INT32_T +AC_TYPE_SIZE_T +AC_TYPE_UINT16_T AC_TYPE_UINT32_T -AC_CHECK_FUNCS([floor setlocale]) +AC_TYPE_UINT64_T -dnl TODO: add check for Vulkan Utility Library +AC_CHECK_FUNCS([floor memset modf pow setlocale sqrt strtol]) -PKG_CHECK_MODULES([GLFW3], [glfw3 >= 3.3.10]) +AC_ARG_ENABLE([debug], + [AS_HELP_STRING([--enable-debug], + [make every path of files not built relative to the source tree, unset NDEBUG])], + [use_debug=$enableval], + [use_debug=no]) +AM_CONDITIONAL([DEBUG], [test x"$use_debug" = xyes]) -dnl TODO: improve vulkan detection +dnl TODO: check if c++23 is supported -dnl TODO: sdk detection is too minimal -AC_MSG_CHECKING([for VULKAN_SDK]) -AS_IF([test "x$VULKAN_SDK" != x], [AC_MSG_RESULT([yes])], [ - AC_MSG_RESULT([no]) - AC_MSG_ERROR([VULKAN_SDK is not set. You have to source setup-env.sh from LunarG's Vulkan SDK before configuring.]) -]) +AC_CHECK_PROG([SLANGC], [slangc], [slangc]) +AS_VAR_IF([SLANGC], [], [AC_MSG_ERROR([slangc not found])]) +dnl TODO: check if slangc support Vulkan 1.4 + +PKG_CHECK_MODULES([GLFW3], [glfw3 >= 3.3.10]) +PKG_CHECK_MODULES([VULKAN], [vulkan]) +PKG_HAVE_DEFINE_WITH_MODULES([NCURSES], [ncurses >= 6.4.20230625]) AC_LANG([C]) CFLAGS_save="$CFLAGS" LIBS_save="$LIBS" -CFLAGS="$STB_CFLAGS" -LIBS="$LIBS $STB_LIBS" -AC_MSG_CHECKING([for STBI version 1]) -AC_RUN_IFELSE([AC_LANG_PROGRAM([ -#define STB_IMAGE_IMPLEMENTATION -#include <stb_image.h> -dnl -dnl we are not really checking for stbi version, this is to check if the header is truly included -dnl without problems -],[if (STBI_VERSION != 1) exit(1)])], [AC_MSG_RESULT([yes])], [ - AC_MSG_RESULT([no]) - AC_MSG_ERROR([STBI not found, or wrong version (1 required)]) -]) -AC_SUBST([STB_CFLAGS]) -AC_SUBST([STB_LIBS]) - +m4_define([vulkan_required_api_variant], [0]) +m4_define([vulkan_required_api_major], [1]) +m4_define([vulkan_required_api_minor], [4]) +m4_define([vulkan_required_api_patch], [313]) +m4_define([vulkan_required_api_str], + [variant ]m4_defn([vulkan_required_api_variant])[ version >= ]m4_defn([vulkan_required_api_major])[.]m4_defn([vulkan_required_api_minor])[.]m4_defn([vulkan_required_api_patch])) +AC_MSG_CHECKING([for Vulkan headers ]m4_defn([vulkan_required_api_str])) CFLAGS="$VULKAN_CFLAGS" LIBS="$LIBS $VULKAN_LIBS" -AC_MSG_CHECKING([for Vulkan version 1.4.313]) -AC_RUN_IFELSE([AC_LANG_PROGRAM([ -#include <stdlib.h> +AC_COMPUTE_INT([vulkan_api], [VK_HEADER_VERSION_COMPLETE], [ #include <vulkan/vulkan.h> -],[if (VK_HEADER_VERSION_COMPLETE != VK_MAKE_API_VERSION(0, 1, 4, 313)) exit(1)])], [AC_MSG_RESULT([yes])], [ - AC_MSG_RESULT([no]) - AC_MSG_ERROR([Vulkan not found, or wrong version (1.4.313 required)]) +], [AC_MSG_ERROR([cannot check Vulkan headers version])]) +AS_VAR_ARITH([vulkan_api_variant], [$vulkan_api \>\> 29]) +AS_VAR_ARITH([vulkan_api_major], [\( $vulkan_api \>\> 22 \) \& 127]) +AS_VAR_ARITH([vulkan_api_minor], [\( $vulkan_api \>\> 12 \) \& 1023]) +AS_VAR_ARITH([vulkan_api_patch], [$vulkan_api \& 4095]) +vulkan_version_ok=no +AS_VAR_ARITH([vulkan_version_cmp], [$vulkan_api_variant \!= ]m4_defn([vulkan_required_api_variant])) +AS_VAR_IF([vulkan_version_cmp], [0], [ + AS_VAR_ARITH([vulkan_version_cmp], [$vulkan_api_major \>= ]m4_defn([vulkan_required_api_major])) + AS_VAR_IF([vulkan_version_cmp], [1], [ + AS_VAR_ARITH([vulkan_version_cmp], [$vulkan_api_major \> ]m4_defn([vulkan_required_api_major])) + AS_VAR_IF([vulkan_version_cmp], [1], [vulkan_version_ok=yes], [ + AS_VAR_ARITH([vulkan_version_cmp], [$vulkan_api_minor \>= ]m4_defn([vulkan_required_api_minor])) + AS_VAR_IF([vulkan_version_cmp], [1], [ + AS_VAR_ARITH([vulkan_version_cmp], [$vulkan_api_minor \> ]m4_defn([vulkan_required_api_minor])) + AS_VAR_IF([vulkan_version_cmp], [1], [vulkan_version_ok=yes], [ + AS_VAR_ARITH([vulkan_version_cmp], [$vulkan_api_patch \>= ]m4_defn([vulkan_required_api_patch])) + AS_VAR_IF([vulkan_version_cmp], [1], [vulkan_version_ok=yes]) + ]) + ]) + ]) + ]) ]) -AC_SUBST([VULKAN_CFLAGS]) -AC_SUBST([VULKAN_LIBS]) +AS_VAR_IF([vulkan_version_ok], [yes], + [AC_MSG_RESULT([yes])], + [ + AC_MSG_RESULT([no]) + AC_MSG_ERROR( + [Vulkan headers variant $vulkan_api_variant version $vulkan_api_major.$vulkan_api_minor.$vulkan_api_patch found, but ]m4_defn([vulkan_required_api_str])[ required]) + ]) CFLAGS="$CFLAGS_save" LIBS="$LIBS_save" -PKG_HAVE_DEFINE_WITH_MODULES([NCURSES], [ncurses >= 6.4.20230625]) - AC_OUTPUT |
