Revision 2a3f669979acd4ca7356c5e046d7019a0d7f504c authored by Rafael Fourquet on 01 October 2023, 15:10:30 UTC, committed by Rafael Fourquet on 12 October 2023, 10:09:28 UTC
The most convenient way to define `seed!` for new RNGs is via an
another RNG, with `seed!(rng::AbstractRNG, seeder::AbstractRNG)`.
But RNGs want to also support more usual seeds.

In order to allow them to only define the method above, a new
`SeedHasher` RNG is implemented, whose purpose is to convert
an initial given seed into a stream of random numbers.
Given that it's not always "safe" to seed an RNG from
another RNG, `SeedHasher` uses a strong cryptographic
hash (SHA2) to produces random streams.

The generic `seed!(rng::AbstractRNG, seed)` method now takes
care of forwarding the call to `seed!(rng, SeedHasher(seed))`.
1 parent cf363f9
Raw File
libwhich.mk
## LIBWHICH ##
LIBWHICH_GIT_URL := https://github.com/vtjnash/libwhich.git
LIBWHICH_TAR_URL = https://api.github.com/repos/vtjnash/libwhich/tarball/$1
$(eval $(call git-external,libwhich,LIBWHICH,,,$(BUILDDIR)))

LIBWHICH_OBJ_LIB := $(build_depsbindir)/libwhich
LIBWHICH_MFLAGS := CC="$(HOSTCC)"

$(BUILDDIR)/$(LIBWHICH_SRC_DIR)/build-compiled: $(BUILDDIR)/$(LIBWHICH_SRC_DIR)/source-extracted
	$(MAKE) -C $(dir $<) $(LIBWHICH_MFLAGS) libwhich
	echo 1 > $@

$(BUILDDIR)/$(LIBWHICH_SRC_DIR)/build-checked: $(BUILDDIR)/$(LIBWHICH_SRC_DIR)/build-compiled
ifeq ($(OS),$(BUILD_OS))
	$(MAKE) -C $(dir $@) $(LIBWHICH_MFLAGS) check
endif
	echo 1 > $@

define LIBWHICH_INSTALL
	mkdir -p $2/$$(build_depsbindir)
	cp $1/libwhich $2/$$(build_depsbindir)
endef
$(eval $(call staged-install, \
	libwhich,$(LIBWHICH_SRC_DIR), \
	LIBWHICH_INSTALL,,,))

clean-libwhich:
	-rm -f $(BUILDDIR)/$(LIBWHICH_SRC_DIR)/build-compiled
	-$(MAKE) -C $(BUILDDIR)/$(LIBWHICH_SRC_DIR) clean

get-libwhich: $(LIBWHICH_SRC_FILE)
extract-libwhich: $(BUILDDIR)/$(LIBWHICH_SRC_DIR)/source-extracted
configure-libwhich: extract-libwhich
compile-libwhich: $(BUILDDIR)/$(LIBWHICH_SRC_DIR)/build-compiled
fastcheck-libwhich: check-libwhich
check-libwhich: $(BUILDDIR)/$(LIBWHICH_SRC_DIR)/build-checked
back to top