xref: /aosp_15_r20/external/gflags/test/gflags_build.py.in (revision 08ab5237c114d5c0eac1090c56f941d3f639d7d3)
1*08ab5237SOystein Eftevaag#!/usr/bin/env python
2*08ab5237SOystein Eftevaag
3*08ab5237SOystein Eftevaagimport os
4*08ab5237SOystein Eftevaagimport sys
5*08ab5237SOystein Eftevaagimport subprocess
6*08ab5237SOystein Eftevaagimport shutil
7*08ab5237SOystein Eftevaag
8*08ab5237SOystein EftevaagCMAKE            = '@CMAKE_COMMAND@'
9*08ab5237SOystein EftevaagCMAKE_BUILD_TYPE = '@CMAKE_BUILD_TYPE@'
10*08ab5237SOystein EftevaagTMPDIR           = '@TMPDIR@'
11*08ab5237SOystein EftevaagSRCDIR           = '@SRCDIR@'
12*08ab5237SOystein EftevaagGFLAGS_DIR       = '@gflags_BINARY_DIR@'
13*08ab5237SOystein Eftevaag
14*08ab5237SOystein Eftevaagif __name__ == "__main__":
15*08ab5237SOystein Eftevaag  if len(sys.argv) != 4:
16*08ab5237SOystein Eftevaag    sys.stderr.write(' '.join(['usage:', sys.argv[0], '<test_name> <srcdir> <expect_fail:0|1>\n']))
17*08ab5237SOystein Eftevaag    sys.exit(1)
18*08ab5237SOystein Eftevaag  test_name   = sys.argv[1]
19*08ab5237SOystein Eftevaag  srcdir      = sys.argv[2]
20*08ab5237SOystein Eftevaag  expect_fail = (sys.argv[3].lower() in ['true', 'yes', 'on', '1'])
21*08ab5237SOystein Eftevaag  bindir      = os.path.join(TMPDIR, test_name)
22*08ab5237SOystein Eftevaag  if TMPDIR == '':
23*08ab5237SOystein Eftevaag    sys.stderr.write('Temporary directory not set!\n')
24*08ab5237SOystein Eftevaag    sys.exit(1)
25*08ab5237SOystein Eftevaag  # create build directory
26*08ab5237SOystein Eftevaag  if os.path.isdir(bindir): shutil.rmtree(bindir)
27*08ab5237SOystein Eftevaag  os.makedirs(bindir)
28*08ab5237SOystein Eftevaag  # configure the build tree
29*08ab5237SOystein Eftevaag  if subprocess.call([CMAKE, '-DCMAKE_BUILD_TYPE:STRING='+CMAKE_BUILD_TYPE,
30*08ab5237SOystein Eftevaag                             '-Dgflags_DIR:PATH='+GFLAGS_DIR,
31*08ab5237SOystein Eftevaag                             '-DTEST_NAME:STRING='+test_name, srcdir], cwd=bindir) != 0:
32*08ab5237SOystein Eftevaag    sys.stderr.write('Failed to configure the build tree!\n')
33*08ab5237SOystein Eftevaag    sys.exit(1)
34*08ab5237SOystein Eftevaag  # build the test project
35*08ab5237SOystein Eftevaag  exit_code = subprocess.call([CMAKE, '--build', bindir, '--config', CMAKE_BUILD_TYPE], cwd=bindir)
36*08ab5237SOystein Eftevaag  if expect_fail == True:
37*08ab5237SOystein Eftevaag    if exit_code == 0:
38*08ab5237SOystein Eftevaag      sys.stderr.write('Build expected to fail, but it succeeded!\n')
39*08ab5237SOystein Eftevaag      sys.exit(1)
40*08ab5237SOystein Eftevaag    else:
41*08ab5237SOystein Eftevaag      sys.stderr.write('Build failed as expected\n')
42*08ab5237SOystein Eftevaag      exit_code = 0
43*08ab5237SOystein Eftevaag  sys.exit(exit_code)
44