aboutsummaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac103
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