Skip to content

Commit

Permalink
refactor(build): Extract Rust module build rules to macro
Browse files Browse the repository at this point in the history
  • Loading branch information
alerque committed Dec 7, 2024
1 parent f5fcbe5 commit f71183a
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 20 deletions.
31 changes: 11 additions & 20 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ endif
$(MANUAL): $(FIGURES)

BUILT_SOURCES_LUA = core/features.lua core/pathsetup.lua core/version.lua
RUSILE_SOURCES = rusile/Cargo.toml rusile/src/lib.rs build-aux/module.rs

bin_PROGRAMS = sile
bin_SCRIPTS = sile-lua
Expand All @@ -67,8 +66,6 @@ EXTRA_sile_SOURCES =
if !EMBEDDED_RESOURCES
nobase_dist_pkgdata_DATA = $(SILEDATA) $(LUALIBRARIES)
nobase_nodist_pkgdata_DATA = $(BUILT_SOURCES_LUA) $(LUAMODULES)
pkglib_LIBRARIES = rusile.@SHARED_LIB_EXT@
rusile_so_SOURCES = $(RUSILE_SOURCES)
endif !EMBEDDED_RESOURCES
dist_doc_DATA = README.md CHANGELOG.md
dist_pdf_DATA = $(_MANUAL)
Expand Down Expand Up @@ -137,7 +134,7 @@ $(CARGO_BIN): justenough/.libs/justenoughlibtexpdf.a
$(CARGO_BIN): justenough/.libs/svg.a
$(CARGO_BIN): libtexpdf/.libs/libtexpdf.a
if !EMBEDDED_RESOURCES
$(CARGO_BIN): rusile.@SHARED_LIB_EXT@
$(CARGO_BIN): rusile.$(SHARED_LIB_EXT)
endif !EMBEDDED_RESOURCES

src/embed-includes.rs: Makefile-distfiles
Expand All @@ -164,7 +161,7 @@ else
MLUAVER = lua$(LUA_SHORT_VERSION)
endif
CARGO_FEATURE_ARGS = --features $(MLUAVER)
RUSILE_FEATURE_ARG = --features $(MLUAVER)
rusile_FEATURE_ARGS = --features $(MLUAVER)

if !SYSTEM_LUA_SOURCES
CARGO_FEATURE_ARGS += --features vendored
Expand All @@ -178,12 +175,6 @@ if FONT_VARIATIONS
CARGO_FEATURE_ARGS += --features variations
endif

@builddir@/target/@RUST_TARGET_SUBDIR@/librusile.@SHARED_LIB_EXT@: $(rusile_so_SOURCES) $(bin_PROGRAMS)
$(CARGO_ENV) $(CARGO) build $(CARGO_VERBOSE) --target $(CARGO_TARGET_TRIPLE) $(RUSILE_FEATURE_ARG) $(CARGO_RELEASE_ARGS) -p rusile

rusile.@SHARED_LIB_EXT@: @builddir@/target/@RUST_TARGET_SUBDIR@/librusile.@SHARED_LIB_EXT@
$(INSTALL) $< $@

DEPDIR := .deps
LOCALFONTS := FONTCONFIG_FILE=$(PWD)/fontconfig.conf
LOCALPATHS := SILE_PATH="$(PWD);libtexpdf/.libs;justenough/.libs"
Expand Down Expand Up @@ -277,13 +268,13 @@ _DOCS_DEPS = $(and $$(filter documentation/%,$@),$(addprefix .fonts/,$(DOCSFONTF
_SUBDIR_TELLS =

if SHARED
_SUBDIR_TELLS += justenough/.libs/fontmetrics.@SHARED_LIB_EXT@ \
justenough/.libs/justenoughfontconfig.@SHARED_LIB_EXT@ \
justenough/.libs/justenoughharfbuzz.@SHARED_LIB_EXT@ \
justenough/.libs/justenoughicu.@SHARED_LIB_EXT@ \
justenough/.libs/justenoughlibtexpdf.@SHARED_LIB_EXT@ \
justenough/.libs/svg.@SHARED_LIB_EXT@ \
libtexpdf/.libs/libtexpdf.@SHARED_LIB_EXT@.0.0.0
_SUBDIR_TELLS += justenough/.libs/fontmetrics.$(SHARED_LIB_EXT) \
justenough/.libs/justenoughfontconfig.$(SHARED_LIB_EXT) \
justenough/.libs/justenoughharfbuzz.$(SHARED_LIB_EXT) \
justenough/.libs/justenoughicu.$(SHARED_LIB_EXT) \
justenough/.libs/justenoughlibtexpdf.$(SHARED_LIB_EXT) \
justenough/.libs/svg.$(SHARED_LIB_EXT) \
libtexpdf/.libs/libtexpdf.$(SHARED_LIB_EXT).0.0.0
endif

if STATIC
Expand Down Expand Up @@ -391,10 +382,10 @@ typos:
busted: $(SILELUA) $(addprefix .fonts/,$(TESTFONTFILES)) $(BUSTEDSPECS)
set -f; IFS=';'
packagepath=(./{,lua-libraries/}?{,/init}.lua)
packagecpath=(./{,core/,{libtexpdf,justenough}/.libs/}?.@SHARED_LIB_EXT@)
packagecpath=(./{,core/,{libtexpdf,justenough}/.libs/}?.$(SHARED_LIB_EXT))
if !SYSTEM_LUAROCKS
packagepath+=(./lua_modules/share/lua/$(LUA_VERSION)/?{,/init}.lua)
packagecpath+=(./lua_modules/lib/lua/$(LUA_VERSION)/?.@SHARED_LIB_EXT@)
packagecpath+=(./lua_modules/lib/lua/$(LUA_VERSION)/?.$(SHARED_LIB_EXT))
endif
# Note: Busted tests can't run with out static build since the Rusile module is
# only available embedded into it. We can test on the dynamic builds where it
Expand Down
8 changes: 8 additions & 0 deletions build-aux/que_rust_boilerplate.m4
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,11 @@ $($SED -E "s/@PACKAGE_VAR@/$PACKAGE_VAR/g;s/@PACKAGE_NAME@/$PACKAGE_NAME/g" buil
])dnl
])

AC_DEFUN([QUE_RUST_MODULE], [
AX_ADD_AM_MACRO([dnl
EXTRA_DIST += build-aux/que_rust_module.am
$($SED -E "s/@MODULE@/$1/g;s/@SHARED_LIB_EXT@/$SHARED_LIB_EXT/g" build-aux/que_rust_module.am)
])dnl
])
8 changes: 8 additions & 0 deletions build-aux/que_rust_module.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
pkglib_LIBRARIES = @MODULE@.@SHARED_LIB_EXT@
@MODULE@_@SHARED_LIB_EXT@_SOURCES = @MODULE@/Cargo.toml @MODULE@/src/lib.rs build-aux/module.rs

@builddir@/target/@RUST_TARGET_SUBDIR@/lib@MODULE@.@SHARED_LIB_EXT@: $(@MODULE@_@SHARED_LIB_EXT@_SOURCES) $(bin_PROGRAMS)
$(CARGO_ENV) $(CARGO) build $(CARGO_VERBOSE) --target $(CARGO_TARGET_TRIPLE) $(@MODULE@_FEATURE_ARGS) $(CARGO_RELEASE_ARGS) -p @MODULE@

@MODULE@.@SHARED_LIB_EXT@: @builddir@/target/@RUST_TARGET_SUBDIR@/lib@MODULE@.@SHARED_LIB_EXT@
$(INSTALL) $< $@
3 changes: 3 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ AM_COND_IF([SYSTEM_LIBTEXPDF],
[AC_MSG_FAILURE([--with-system-libtexpdf was given, but test for libtexpdf failed])])],
[AC_CONFIG_SUBDIRS([libtexpdf])])


PKG_CHECK_MODULES(ICU, icu-uc icu-i18n icu-io, [
with_icu=yes
],[
Expand Down Expand Up @@ -259,6 +260,8 @@ esac
AC_SUBST([SHARED_LIB_EXT])
AC_SUBST([LUAROCKSARGS])

AM_COND_IF([SHARED], [QUE_RUST_MODULE([rusile])])

# Avoid need for `--datarootdir=$(cd ..; pwd)` hack to run locally for
# tests/manual build when developer mode is enabled
AM_COND_IF([DEVELOPER_MODE], [
Expand Down

0 comments on commit f71183a

Please sign in to comment.