@@ -145,7 +145,7 @@ php_bison(foo foo.y foo.c OPTIONS -Wall --debug)
145145# bison -Wall --debug foo.y --output foo.c
146146```
147147
148- ### Specifying options
148+ ### Example: Specifying options
149149
150150This module provides some default options when using the `ADD_DEFAULT_OPTIONS`:
151151
@@ -227,7 +227,9 @@ _php_bison_config()
227227
228228include_guard (GLOBAL )
229229
230+ include (ExternalProject)
230231include (FeatureSummary)
232+ include (FetchContent)
231233
232234# Configuration after find_package() in this module.
233235macro (_php_bison_config_options)
@@ -317,6 +319,12 @@ function(php_bison name input output)
317319 AND NOT _PHP_BISON_DOWNLOAD
318320 )
319321 find_package (BISON ${PHP_BISON_VERSION} ${quiet} )
322+ set_package_properties(
323+ BISON
324+ PROPERTIES
325+ URL "https://www.gnu.org/software/bison/"
326+ DESCRIPTION "General-purpose parser generator"
327+ )
320328 endif ()
321329
322330 get_property (role GLOBAL PROPERTY CMAKE_ROLE)
@@ -655,8 +663,8 @@ function(_php_bison_download)
655663 )
656664
657665 # Target created by ExternalProject:
658- if (TARGET bison )
659- add_dependencies (Bison::Bison bison )
666+ if (TARGET BISON- install )
667+ add_dependencies (Bison::Bison BISON- install )
660668 endif ()
661669
662670 # Move dependency to PACKAGES_FOUND.
@@ -676,22 +684,35 @@ function(_php_bison_download)
676684 _PHP_BISON_DOWNLOAD
677685 TRUE
678686 CACHE INTERNAL
679- "Internal marker whether the Bison will be downloaded."
687+ "Internal marker whether Bison is downloaded."
680688 )
681689
682690 return (PROPAGATE BISON_FOUND BISON_VERSION)
683691endfunction ()
684692
685693# Downloads GNU Bison.
686694function (_php_bison_download_gnu)
687- message (STATUS "GNU Bison ${BISON_VERSION} will be downloaded at build phase" )
688-
689- include (ExternalProject)
695+ message (
696+ STATUS
697+ "Downloading GNU Bison ${BISON_VERSION} from https://ftp.gnu.org/gnu/bison"
698+ )
690699
691- ExternalProject_Add (
692- bison
700+ FetchContent_Declare (
701+ BISON
693702 URL https://ftp.gnu.org/gnu/bison/bison-${BISON_VERSION} .tar.gz
703+ SOURCE_SUBDIR non-existing
694704 DOWNLOAD_EXTRACT_TIMESTAMP TRUE
705+ OVERRIDE_FIND_PACKAGE
706+ )
707+
708+ FetchContent_MakeAvailable(BISON)
709+
710+ ExternalProject_Add(
711+ BISON
712+ STEP_TARGETS build install
713+ SOURCE_DIR ${bison_SOURCE_DIR}
714+ BINARY_DIR ${bison_BINARY_DIR}
715+ INSTALL_DIR ${FETCHCONTENT_BASE_DIR} /bison-install
695716 CONFIGURE_COMMAND
696717 <SOURCE_DIR>/configure
697718 --disable-dependency-tracking
@@ -701,37 +722,32 @@ function(_php_bison_download_gnu)
701722 LOG_INSTALL TRUE
702723 )
703724
704- ExternalProject_Get_Property(bison INSTALL_DIR)
725+ ExternalProject_Get_Property(BISON INSTALL_DIR)
705726
706727 set_property (CACHE BISON_EXECUTABLE PROPERTY VALUE ${INSTALL_DIR} /bin/bison)
707728endfunction ()
708729
709- # Downloads https://github.com/lexxmark/ winflexbison.
730+ # Downloads winflexbison.
710731function (_php_bison_download_windows)
711732 message (
712733 STATUS
713- "Downloading win_bison ${BISON_VERSION} (${PHP_BISON_WIN_VERSION_DOWNLOAD} )"
734+ "Downloading win_bison ${BISON_VERSION} from "
735+ "https://github.com/lexxmark/winflexbison "
736+ "(${PHP_BISON_WIN_VERSION_DOWNLOAD} )"
714737 )
715738
716- get_directory_property (dir EP_BASE)
717- if (NOT dir)
718- set (dir "${CMAKE_CURRENT_BINARY_DIR} /CMakeFiles" )
719- endif ()
720-
721- set (file "${dir} /win_flex_bison.zip" )
722-
723- file (
724- DOWNLOAD
725- "https://github.com/lexxmark/winflexbison/releases/download/v${PHP_BISON_WIN_VERSION_DOWNLOAD} /win_flex_bison-${PHP_BISON_WIN_VERSION_DOWNLOAD} .zip"
726- ${file}
727- SHOW_PROGRESS
739+ FetchContent_Declare(
740+ BISON
741+ URL https://github.com/lexxmark/winflexbison/releases/download/v${PHP_BISON_WIN_VERSION_DOWNLOAD} /win_flex_bison-${PHP_BISON_WIN_VERSION_DOWNLOAD} .zip
742+ SOURCE_SUBDIR non-existing
743+ OVERRIDE_FIND_PACKAGE
728744 )
729745
730- file (ARCHIVE_EXTRACT INPUT " ${file} " DESTINATION " ${dir} /win_flex_bison" )
746+ FetchContent_MakeAvailable(BISON )
731747
732748 set_property (
733749 CACHE
734750 BISON_EXECUTABLE
735- PROPERTY VALUE "${dir} /win_flex_bison /win_bison.exe"
751+ PROPERTY VALUE "${bison_SOURCE_DIR} /win_bison.exe"
736752 )
737753endfunction ()
0 commit comments