diff options
| author | vimene <vincent.menegaux@gmail.com> | 2026-02-15 15:11:49 +0100 |
|---|---|---|
| committer | vimene <vincent.menegaux@gmail.com> | 2026-02-15 15:11:49 +0100 |
| commit | 7536dd705d121ed3a49b7e4b05af88fd241d1674 (patch) | |
| tree | 5ed271fd91c76360319e49c79883f969fafad283 /configure.ac | |
| parent | 950f577a5b82c72fd2acdfa81cbac1db3f177fc6 (diff) | |
| download | engine-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.ac | 79 |
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" |
