-# Copyright (C) 2014-2016 Intel Corporation. All Rights Reserved.
+# Copyright (C) 2014-2018 Intel Corporation. All Rights Reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
import os
import sys
import knob_defs
-from gen_common import MakoTemplateWriter, ArgumentParser
+from gen_common import *
def main(args=sys.argv[1:]):
args = parser.parse_args()
cur_dir = os.path.dirname(os.path.abspath(__file__))
- template_file = os.path.join(cur_dir, 'templates', 'gen_knobs.cpp')
-
- if args.gen_h:
- MakoTemplateWriter.to_file(
- template_file,
- args.output,
- cmdline=sys.argv,
- filename='gen_knobs',
- knobs=knob_defs.KNOBS,
- includes=['core/knobs_init.h', 'common/os.h', 'sstream', 'iomanip'],
- gen_header=True)
-
- if args.gen_cpp:
- MakoTemplateWriter.to_file(
- template_file,
- args.output,
- cmdline=sys.argv,
- filename='gen_knobs',
- knobs=knob_defs.KNOBS,
- includes=['core/knobs_init.h', 'common/os.h', 'sstream', 'iomanip'],
- gen_header=False)
+ template_cpp = os.path.join(cur_dir, 'templates', 'gen_knobs.cpp')
+ template_h = os.path.join(cur_dir, 'templates', 'gen_knobs.h')
+
+ output_filename = os.path.basename(args.output)
+ output_dir = MakeTmpDir('_codegen')
+
+ output_file = os.path.join(output_dir, output_filename)
+
+ rval = 0
+
+ try:
+ if args.gen_h:
+ MakoTemplateWriter.to_file(
+ template_h,
+ output_file,
+ cmdline=sys.argv,
+ filename='gen_knobs',
+ knobs=knob_defs.KNOBS)
+
+ if args.gen_cpp:
+ MakoTemplateWriter.to_file(
+ template_cpp,
+ output_file,
+ cmdline=sys.argv,
+ filename='gen_knobs',
+ knobs=knob_defs.KNOBS,
+ includes=['core/knobs_init.h', 'common/os.h', 'sstream', 'iomanip'])
+
+ rval = CopyFileIfDifferent(output_file, args.output)
+
+ except:
+ rval = 1
+
+ finally:
+ # ignore errors from delete of tmp directory
+ DeleteDirTree(output_dir)
return 0