aboutsummaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorvimene <vincent.menegaux@gmail.com>2026-02-15 15:11:49 +0100
committervimene <vincent.menegaux@gmail.com>2026-02-15 15:11:49 +0100
commit7536dd705d121ed3a49b7e4b05af88fd241d1674 (patch)
tree5ed271fd91c76360319e49c79883f969fafad283 /configure.ac
parent950f577a5b82c72fd2acdfa81cbac1db3f177fc6 (diff)
downloadengine-7536dd705d121ed3a49b7e4b05af88fd241d1674.tar.gz
more improvements in builds setup
- moved slang shaders to spvshaders to separate software and hardware shaders - split Makefile.am into Makefile.am, src/Makefile.am and src/spvshaders/Makefile.am - build shaders as DATA primary, instead of both PROGRAMS and SCRIPTS, which greatly simplifies building. Before that, we had to first build them as PROGRAMS, and then copy them as SCRIPTS to remove executable extensions (i.e. ".exe" for Windows) - changed final executable dir from enginedir to bindir, which makes automake see it as an exec instead of data - compute relative paths from C++, which makes it possible to change dirs arbitrarily when running make while still having a relocatable executable - updated README.md to reflect changes in dirs - use AX_COMPARE_VERSION() to simplify checking if Vulkan headers version is correct - factored out most of paths computation in engine::path_utils::Paths
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac79
1 files changed, 29 insertions, 50 deletions
diff --git a/configure.ac b/configure.ac
index 744694d..959b07c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,9 +5,14 @@ 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])
+AC_CONFIG_FILES([Makefile src/Makefile src/spvshaders/Makefile])
AC_REQUIRE_AUX_FILE([tap-driver.sh])
+CXXFLAGS_save="$CXXFLAGS"
+LIBS_save="$LIBS"
+CXXFLAGS=
+LIBS=
+
AC_PROG_CXX
AC_PROG_AWK
AC_PROG_INSTALL
@@ -43,59 +48,33 @@ 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++])
-CXXFLAGS_save="$CXXFLAGS"
-LIBS_save="$LIBS"
-
-# ENGINE_VULKAN_VER(VARIANT, MAJOR, MINOR, PATCH, [CMP])
-# ------------------------------------------------------
-m4_define([ENGINE_VULKAN_VER], [[variant ]$1[ version ]ifelse([$#], [5], [$5[ ]], [[]])$2[.]$3[.]$4])
+AC_LANG_PUSH([C++])
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],
- [ENGINE_VULKAN_VER(
- [vulkan_required_api_variant],
- [vulkan_required_api_major],
- [vulkan_required_api_minor],
- [vulkan_required_api_patch],
- [[>=]])])
-AC_MSG_CHECKING([for Vulkan headers ]vulkan_required_api_str)
+m4_define([vulkan_required_api], [[1.4.313]])
+AC_MSG_CHECKING(
+ [if Vulkan headers are variant ]vulkan_required_api_variant[ and version at least ]vulkan_required_api)
CXXFLAGS="$VULKAN_CFLAGS"
-AC_COMPUTE_INT([vulkan_api], [VK_HEADER_VERSION_COMPLETE], [
-#include <vulkan/vulkan.h>
-], [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_api_str="ENGINE_VULKAN_VER([[$vulkan_api_variant]], [[$vulkan_api_major]], [[$vulkan_api_minor]], [[$vulkan_api_patch]])"
-vulkan_version_ok=no
-AS_VAR_IF([vulkan_api_variant], vulkan_required_api_variant, [
- AS_VAR_ARITH([vulkan_version_cmp], [$vulkan_api_major \>= ]vulkan_required_api_major)
- AS_VAR_IF([vulkan_version_cmp], [1], [
- AS_VAR_ARITH([vulkan_version_cmp], [$vulkan_api_major \> ]vulkan_required_api_major)
- AS_VAR_IF([vulkan_version_cmp], [1], [vulkan_version_ok=yes], [
- AS_VAR_ARITH([vulkan_version_cmp], [$vulkan_api_minor \>= ]vulkan_required_api_minor)
- AS_VAR_IF([vulkan_version_cmp], [1], [
- AS_VAR_ARITH([vulkan_version_cmp], [$vulkan_api_minor \> ]vulkan_required_api_minor)
- AS_VAR_IF([vulkan_version_cmp], [1], [vulkan_version_ok=yes], [
- AS_VAR_ARITH([vulkan_version_cmp], [$vulkan_api_patch \>= ]vulkan_required_api_patch)
- AS_VAR_IF([vulkan_version_cmp], [1], [vulkan_version_ok=yes])
- ])
- ])
- ])
- ])
+AC_COMPUTE_INT([vulkan_api_int], [VK_HEADER_VERSION_COMPLETE],
+ [#include <vulkan/vulkan.h>],
+ [AC_MSG_ERROR([cannot check Vulkan headers version])])
+AS_VAR_ARITH([vulkan_api_variant], [$][vulkan_api_int \>\> 29])
+AS_VAR_ARITH([vulkan_api_major], [\( ][$][vulkan_api_int \>\> 22 \) \& 127])
+AS_VAR_ARITH([vulkan_api_minor], [\( ][$][vulkan_api_int \>\> 12 \) \& 1023])
+AS_VAR_ARITH([vulkan_api_patch], [$][vulkan_api_int \& 4095])
+vulkan_api="[$]vulkan_api_major.[$]vulkan_api_minor.[$]vulkan_api_patch"
+AS_VAR_IF([vulkan_api_variant], vulkan_required_api_variant,, [
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR(
+ [Vulkan headers are variant ][$][vulkan_api_variant, but variant ]vulkan_required_api_variant[ required])
])
-AS_VAR_IF([vulkan_version_ok], [yes],
- [AC_MSG_RESULT([yes])],
- [
- AC_MSG_RESULT([no])
- AC_MSG_ERROR(
- [Vulkan headers $vulkan_api_str found, but ]vulkan_required_api_str[ required])
- ])
+AX_COMPARE_VERSION([$][vulkan_api], [ge], vulkan_required_api, [AC_MSG_RESULT([yes])], [
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR(
+ [Vulkan headers are version ][$][vulkan_api, but version at least ]vulkan_required_api[ required])
+])
+
+AC_LANG_POP([C++])
CXXFLAGS="$CXXFLAGS_save"
LIBS="$LIBS_save"