@@ -618,60 +618,73 @@ function(_php_re2c_download)
618618 )
619619 endif ()
620620
621- message (STATUS "Re2c ${RE2C_VERSION} will be downloaded at build phase" )
621+ message (
622+ STATUS
623+ "Downloading re2c ${RE2C_VERSION} from https://github.com/skvadrik/re2c"
624+ )
622625
623626 include (ExternalProject)
627+ include (FetchContent)
628+
629+ FetchContent_Declare(
630+ RE2C
631+ URL https://github.com/skvadrik/re2c/archive/refs/tags/${RE2C_VERSION} .tar.gz
632+ SOURCE_SUBDIR non-existing
633+ OVERRIDE_FIND_PACKAGE
634+ )
635+
636+ FetchContent_MakeAvailable(RE2C)
624637
625638 # Configure re2c build.
639+ set (options -DRE2C_BUILD_RE2GO=OFF -DRE2C_BUILD_RE2RUST=OFF )
640+
626641 if (RE2C_VERSION VERSION_GREATER_EQUAL 4)
627- set (
628- re2cOptions
629- -DRE2C_BUILD_RE2D=OFF
630- -DRE2C_BUILD_RE2HS=OFF
631- -DRE2C_BUILD_RE2JAVA=OFF
632- -DRE2C_BUILD_RE2JS=OFF
633- -DRE2C_BUILD_RE2OCAML=OFF
634- -DRE2C_BUILD_RE2PY=OFF
635- -DRE2C_BUILD_RE2V=OFF
636- -DRE2C_BUILD_RE2ZIG=OFF
637- -DRE2C_BUILD_TESTS=OFF
642+ list (
643+ APPEND
644+ options
645+ -DRE2C_BUILD_RE2D=OFF
646+ -DRE2C_BUILD_RE2HS=OFF
647+ -DRE2C_BUILD_RE2JAVA=OFF
648+ -DRE2C_BUILD_RE2JS=OFF
649+ -DRE2C_BUILD_RE2OCAML=OFF
650+ -DRE2C_BUILD_RE2PY=OFF
651+ -DRE2C_BUILD_RE2V=OFF
652+ -DRE2C_BUILD_RE2ZIG=OFF
653+ -DRE2C_BUILD_TESTS=OFF
638654 )
639655 else ()
640- set (
641- re2cOptions
642- -DCMAKE_DISABLE_FIND_PACKAGE_Python3=TRUE
643- -DPython3_VERSION=3.7
656+ list (
657+ APPEND
658+ options
659+ -DCMAKE_DISABLE_FIND_PACKAGE_Python3=TRUE
660+ -DPython3_VERSION=3.7
644661 )
645662 endif ()
646663
647664 if (RE2C_VERSION VERSION_GREATER_EQUAL 4.2)
648- list (APPEND re2cOptions -DRE2C_BUILD_RE2SWIFT=OFF )
665+ list (APPEND options -DRE2C_BUILD_RE2SWIFT=OFF )
649666 endif ()
650667
651668 ExternalProject_Add(
652- re2c
653- URL
654- https://github.com/skvadrik/re2c/archive/refs/tags/${RE2C_VERSION} .tar.gz
655- CMAKE_ARGS
656- -DRE2C_BUILD_RE2GO=OFF
657- -DRE2C_BUILD_RE2RUST=OFF
658- ${re2cOptions}
669+ RE2C
670+ STEP_TARGETS build
671+ SOURCE_DIR ${re2c_SOURCE_DIR}
672+ BINARY_DIR ${re2c_BINARY_DIR}
673+ CMAKE_ARGS ${options}
659674 INSTALL_COMMAND ""
660675 )
661676
662- ExternalProject_Get_Property(re2c BINARY_DIR)
663- set (re2c ${BINARY_DIR} /re2c)
664- if (CMAKE_SYSTEM_NAME STREQUAL "Windows" )
665- string (APPEND re2c ".exe" )
666- endif ()
667- set_property (CACHE RE2C_EXECUTABLE PROPERTY VALUE ${re2c} )
677+ set_property (
678+ CACHE RE2C_EXECUTABLE
679+ PROPERTY VALUE ${re2c_BINARY_DIR} /re2c${CMAKE_EXECUTABLE_SUFFIX}
680+ )
668681
669682 add_executable (RE2C::RE2C IMPORTED GLOBAL )
670683 set_target_properties (
671684 RE2C::RE2C
672685 PROPERTIES IMPORTED_LOCATION ${RE2C_EXECUTABLE}
673686 )
674- add_dependencies (RE2C::RE2C re2c )
687+ add_dependencies (RE2C::RE2C RE2C- build )
675688
676689 # Move dependency to PACKAGES_FOUND.
677690 block()
@@ -690,7 +703,7 @@ function(_php_re2c_download)
690703 _PHP_RE2C_DOWNLOAD
691704 TRUE
692705 CACHE INTERNAL
693- "Internal marker whether the re2c will be downloaded."
706+ "Internal marker whether the re2c is downloaded."
694707 )
695708
696709 return (PROPAGATE RE2C_FOUND RE2C_VERSION)
0 commit comments