# them!)
in puzzles do perl -i -pe 's/Unidentified build/$(Version)/' osx/Info.plist
+ifneq "$(NOICONS)" yes then
+ # Run enough of a native Unix build to produce the various icons.
+ in . do cmake -B build-icons puzzles
+ in build-icons do make -j$(nproc) icons VERBOSE=1
+
+ # Copy the C icon files into the icons source subdirectory, for the
+ # distribution tarball.
+ in . do cp build-icons/icons/*-icon.c puzzles/icons
+endif
+
# The very first thing we do is to make the source archive, before we
# fill up the build directory with extra files.
delegate -
return puzzles-$(Version).tar.gz
enddelegate
-ifneq "$(NOICONS)" yes then
- # Run enough of a native Unix build to produce the icons needed for
- # the Windows builds and the website.
- in puzzles do cmake -B build-icons .
- in puzzles/build-icons do make -j$(nproc) icons VERBOSE=1
-endif
-
ifneq "$(NOMACOS)" yes then
# Build the OS X binaries and .dmg archive.
delegate osx
in puzzles do make -f Makefile.doc clean
in puzzles do make -f Makefile.doc -j$(nproc) # build help files for installer
- in puzzles do cmake -B build-win64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DCMAKE_TOOLCHAIN_FILE=$(cmake_toolchain_clangcl64) .
- in puzzles do cmake -B build-win32 -DCMAKE_BUILD_TYPE=Release -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DCMAKE_TOOLCHAIN_FILE=$(cmake_toolchain_clangcl32) .
+ in . with cmake_at_least_3.20 do cmake -B puzzles/build-win64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DCMAKE_TOOLCHAIN_FILE=$(cmake_toolchain_clangcl64) -DICO_DIR=$$PWD/build-icons/icons puzzles
+ in . with cmake_at_least_3.20 do cmake -B puzzles/build-win32 -DCMAKE_BUILD_TYPE=Release -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DCMAKE_TOOLCHAIN_FILE=$(cmake_toolchain_clangcl32) -DICO_DIR=$$PWD/build-icons/icons puzzles
in puzzles/build-win64 do make -j$(nproc) VERBOSE=1
in puzzles/build-win32 do make -j$(nproc) VERBOSE=1
# Phew, we're done. Deliver everything!
ifneq "$(NOICONS)" yes then
- deliver puzzles/build-icons/icons/*-web.png $@
+ deliver build-icons/icons/*-web.png $@
endif
ifneq "$(NOWINDOWS)" yes then
deliver puzzles/winbin64/*.exe $@
function(get_platform_puzzle_extra_source_files OUTVAR NAME)
if(build_icons AND EXISTS ${CMAKE_SOURCE_DIR}/icons/${NAME}.sav)
+ # If we have the equipment to rebuild the puzzles' icon images
+ # from scratch, do so. Then changes in the puzzle display code
+ # will cause the icon to auto-update.
build_icon(${NAME})
set(c_icon_file ${CMAKE_BINARY_DIR}/icons/${NAME}-icon.c)
+ elseif(EXISTS ${CMAKE_SOURCE_DIR}/icons/${NAME}-icon.c)
+ # Failing that, use a pre-built icon file in the 'icons'
+ # subdirectory, if there is one. (They don't exist in git, but the
+ # distribution tarball will have pre-built them and put them in
+ # there, so that users building from that can still have icons
+ # even if they don't have the wherewithal to rebuild them.)
+ set(c_icon_file ${CMAKE_SOURCE_DIR}/icons/${NAME}-icon.c)
else()
+ # Failing even that, include no-icon.c to satisfy the link-time
+ # dependencies. The puzzles will build without nice icons.
set(c_icon_file ${CMAKE_SOURCE_DIR}/no-icon.c)
endif()