diff options
-rwxr-xr-x | version.sh | 14 | ||||
-rw-r--r-- | waftools/generators/headers.py | 26 | ||||
-rw-r--r-- | wscript | 7 |
3 files changed, 17 insertions, 30 deletions
diff --git a/version.sh b/version.sh index 3eac7ef050..a3d753da44 100755 --- a/version.sh +++ b/version.sh @@ -2,16 +2,22 @@ export LC_ALL=C +version_h="version.h" + for ac_option do + ac_arg=$(echo $ac_option | cut -d '=' -f 2-) case "$ac_option" in --extra=*) - extra="-$option" + extra="-$ac_arg" + ;; + --versionh=*) + version_h="$ac_arg" ;; --print) print=yes ;; *) - echo "Unknown parameter: $option" >&2 + echo "Unknown parameter: $ac_option" >&2 exit 1 ;; @@ -42,12 +48,12 @@ if test "$print" = yes ; then fi NEW_REVISION="#define VERSION \"${VERSION}\"" -OLD_REVISION=$(head -n 1 version.h 2> /dev/null) +OLD_REVISION=$(head -n 1 "$version_h" 2> /dev/null) BUILDDATE="#define BUILDDATE \"$(date)\"" # Update version.h only on revision changes to avoid spurious rebuilds if test "$NEW_REVISION" != "$OLD_REVISION"; then - cat <<EOF > version.h + cat <<EOF > "$version_h" $NEW_REVISION $BUILDDATE EOF diff --git a/waftools/generators/headers.py b/waftools/generators/headers.py index 546dd0344d..dbedcc0865 100644 --- a/waftools/generators/headers.py +++ b/waftools/generators/headers.py @@ -4,37 +4,12 @@ def __cp_to_variant__(ctx, variant, basename): node.parent.mkdir() node.write(src) -def __get_version__(ctx): - import subprocess - process = subprocess.Popen(["sh", "./version.sh", "--print"], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - cwd=ctx.srcnode.abspath()) - (version, err) = process.communicate() - version = version.strip() - if not isinstance(version, str): - version = version.decode('utf-8') - return version - -def __get_build_date__(): - import time - return time.strftime("%Y-%m-%dT%H:%M:%S", time.gmtime()) - def __write_config_h__(ctx): ctx.start_msg("Writing configuration header:") ctx.write_config_header('config.h') __cp_to_variant__(ctx, ctx.options.variant, 'config.h') ctx.end_msg("config.h", "PINK") -def __write_version_h__(ctx): - ctx.start_msg("Writing header:") - ctx.env.VERSION = __get_version__(ctx) - ctx.define("VERSION", ctx.env.VERSION) - ctx.define("BUILDDATE", __get_build_date__()) - ctx.write_config_header("version.h") - __cp_to_variant__(ctx, ctx.options.variant, 'version.h') - ctx.end_msg("version.h", "PINK") - # Approximately escape the string as C string literal def __escape_c_string(s): return s.replace("\"", "\\\"").replace("\n", "\\n") @@ -58,4 +33,3 @@ def __add_mpv_defines__(ctx): def configure(ctx): __add_mpv_defines__(ctx) __write_config_h__(ctx) - __write_version_h__(ctx) @@ -911,6 +911,12 @@ def configure(ctx): ctx.store_dependencies_lists() +def __write_version__(ctx): + import subprocess + subprocess.call(["sh", "./version.sh", + "--versionh=" + ctx.bldnode.abspath() + "/version.h"], + cwd=ctx.srcnode.abspath()) + def build(ctx): if ctx.options.variant not in ctx.all_envs: from waflib import Errors @@ -918,6 +924,7 @@ def build(ctx): 'The project was not configured: run "waf --variant={0} configure" first!' .format(ctx.options.variant)) ctx.unpack_dependencies_lists() + __write_version__(ctx) ctx.load('wscript_build') def init(ctx): |