From 28b9ba022cdf6aba25e2b6d1fd70f8cb1e3ca765 Mon Sep 17 00:00:00 2001 From: Roberto Di Remigio Date: Thu, 6 Apr 2017 15:34:16 +0200 Subject: [PATCH] Parse language field in YAML to generate project( ) in CMakeLists.txt --- autocmake/generate.py | 4 ++-- test/boost_header_only/cmake/autocmake.yml | 1 + test/boost_libs/cmake/autocmake.yml | 1 + test/cxx/cmake/autocmake.yml | 1 + test/cxx_accelerate/cmake/autocmake.yml | 1 + test/cxx_cblas/cmake/autocmake.yml | 3 +++ test/fc/cmake/autocmake.yml | 1 + test/fc_blas/cmake/autocmake.yml | 1 + test/fc_git_info/cmake/autocmake.yml | 1 + test/fc_int64/cmake/autocmake.yml | 1 + test/fc_lapack/cmake/autocmake.yml | 1 + test/fc_omp/cmake/autocmake.yml | 1 + test/python_interpreter/cmake/autocmake.yml | 1 + test/python_interpreter_custom/cmake/autocmake.yml | 2 ++ test/python_libs/cmake/autocmake.yml | 1 + test/python_libs_custom/cmake/autocmake.yml | 1 + update.py | 8 +++++++- 17 files changed, 27 insertions(+), 3 deletions(-) diff --git a/autocmake/generate.py b/autocmake/generate.py index 3c24eca..451ed1c 100644 --- a/autocmake/generate.py +++ b/autocmake/generate.py @@ -118,7 +118,7 @@ def gen_setup(config, default_build_type, relative_path, setup_script_name): return s -def gen_cmakelists(project_name, min_cmake_version, default_build_type, relative_path, modules): +def gen_cmakelists(project_name, project_language, min_cmake_version, default_build_type, relative_path, modules): """ Generate CMakeLists.txt. """ @@ -132,7 +132,7 @@ def gen_cmakelists(project_name, min_cmake_version, default_build_type, relative s.append('cmake_minimum_required(VERSION {0} FATAL_ERROR)'.format(min_cmake_version)) s.append('\n# project name') - s.append('project({0})'.format(project_name)) + s.append('project({0} {1})'.format(project_name, project_language)) s.append('\n# do not rebuild if rules (compiler flags) change') s.append('set(CMAKE_SKIP_RULE_DEPENDENCY TRUE)') diff --git a/test/boost_header_only/cmake/autocmake.yml b/test/boost_header_only/cmake/autocmake.yml index 7ab720b..b96b88c 100644 --- a/test/boost_header_only/cmake/autocmake.yml +++ b/test/boost_header_only/cmake/autocmake.yml @@ -1,5 +1,6 @@ name: example min_cmake_version: 2.8 +language: CXX default_build_type: debug modules: - cxx: diff --git a/test/boost_libs/cmake/autocmake.yml b/test/boost_libs/cmake/autocmake.yml index 0ae1ebe..1eb5510 100644 --- a/test/boost_libs/cmake/autocmake.yml +++ b/test/boost_libs/cmake/autocmake.yml @@ -1,5 +1,6 @@ name: example min_cmake_version: 2.8 +language: CXX default_build_type: debug modules: - cxx: diff --git a/test/cxx/cmake/autocmake.yml b/test/cxx/cmake/autocmake.yml index 7b24802..c6cf288 100644 --- a/test/cxx/cmake/autocmake.yml +++ b/test/cxx/cmake/autocmake.yml @@ -1,5 +1,6 @@ name: example min_cmake_version: 2.8 +language: CXX default_build_type: debug modules: - cxx: diff --git a/test/cxx_accelerate/cmake/autocmake.yml b/test/cxx_accelerate/cmake/autocmake.yml index e3d429a..5aea2c9 100644 --- a/test/cxx_accelerate/cmake/autocmake.yml +++ b/test/cxx_accelerate/cmake/autocmake.yml @@ -1,5 +1,6 @@ name: example min_cmake_version: 2.8 +language: CXX default_build_type: debug modules: - cxx: diff --git a/test/cxx_cblas/cmake/autocmake.yml b/test/cxx_cblas/cmake/autocmake.yml index 567009e..3aa29d6 100644 --- a/test/cxx_cblas/cmake/autocmake.yml +++ b/test/cxx_cblas/cmake/autocmake.yml @@ -1,5 +1,8 @@ name: example min_cmake_version: 2.8 +language: + - C + - CXX default_build_type: debug modules: - cxx: diff --git a/test/fc/cmake/autocmake.yml b/test/fc/cmake/autocmake.yml index 0bca6cf..d23ca30 100644 --- a/test/fc/cmake/autocmake.yml +++ b/test/fc/cmake/autocmake.yml @@ -1,5 +1,6 @@ name: example min_cmake_version: 2.8 +language: Fortran default_build_type: debug modules: - fc: diff --git a/test/fc_blas/cmake/autocmake.yml b/test/fc_blas/cmake/autocmake.yml index 1f390cf..816f8d4 100644 --- a/test/fc_blas/cmake/autocmake.yml +++ b/test/fc_blas/cmake/autocmake.yml @@ -1,5 +1,6 @@ name: example min_cmake_version: 2.8 +language: Fortran default_build_type: debug modules: - fc: diff --git a/test/fc_git_info/cmake/autocmake.yml b/test/fc_git_info/cmake/autocmake.yml index 5fb3b29..f55b1e2 100644 --- a/test/fc_git_info/cmake/autocmake.yml +++ b/test/fc_git_info/cmake/autocmake.yml @@ -1,5 +1,6 @@ name: example min_cmake_version: 2.8 +language: Fortran default_build_type: debug modules: - fc: diff --git a/test/fc_int64/cmake/autocmake.yml b/test/fc_int64/cmake/autocmake.yml index 3d8f5f3..c1216c5 100644 --- a/test/fc_int64/cmake/autocmake.yml +++ b/test/fc_int64/cmake/autocmake.yml @@ -1,5 +1,6 @@ name: example min_cmake_version: 2.8 +language: Fortran default_build_type: debug modules: - fc: diff --git a/test/fc_lapack/cmake/autocmake.yml b/test/fc_lapack/cmake/autocmake.yml index 914522e..dc32316 100644 --- a/test/fc_lapack/cmake/autocmake.yml +++ b/test/fc_lapack/cmake/autocmake.yml @@ -1,5 +1,6 @@ name: example min_cmake_version: 2.8 +language: Fortran default_build_type: debug modules: - fc: diff --git a/test/fc_omp/cmake/autocmake.yml b/test/fc_omp/cmake/autocmake.yml index e45bdeb..96aeea6 100644 --- a/test/fc_omp/cmake/autocmake.yml +++ b/test/fc_omp/cmake/autocmake.yml @@ -1,5 +1,6 @@ name: example min_cmake_version: 2.8 +language: Fortran default_build_type: debug modules: - fc: diff --git a/test/python_interpreter/cmake/autocmake.yml b/test/python_interpreter/cmake/autocmake.yml index 7cc0d91..7e925d7 100644 --- a/test/python_interpreter/cmake/autocmake.yml +++ b/test/python_interpreter/cmake/autocmake.yml @@ -1,5 +1,6 @@ name: example min_cmake_version: 2.8 +language: CXX default_build_type: debug modules: - cxx: diff --git a/test/python_interpreter_custom/cmake/autocmake.yml b/test/python_interpreter_custom/cmake/autocmake.yml index c547d70..d41016a 100644 --- a/test/python_interpreter_custom/cmake/autocmake.yml +++ b/test/python_interpreter_custom/cmake/autocmake.yml @@ -1,5 +1,7 @@ name: example min_cmake_version: 2.8 +language: + - CXX default_build_type: debug modules: - cxx: diff --git a/test/python_libs/cmake/autocmake.yml b/test/python_libs/cmake/autocmake.yml index 7cc0d91..7e925d7 100644 --- a/test/python_libs/cmake/autocmake.yml +++ b/test/python_libs/cmake/autocmake.yml @@ -1,5 +1,6 @@ name: example min_cmake_version: 2.8 +language: CXX default_build_type: debug modules: - cxx: diff --git a/test/python_libs_custom/cmake/autocmake.yml b/test/python_libs_custom/cmake/autocmake.yml index 7cc0d91..7e925d7 100644 --- a/test/python_libs_custom/cmake/autocmake.yml +++ b/test/python_libs_custom/cmake/autocmake.yml @@ -1,5 +1,6 @@ name: example min_cmake_version: 2.8 +language: CXX default_build_type: debug modules: - cxx: diff --git a/update.py b/update.py index e0d2f1a..9f3413a 100644 --- a/update.py +++ b/update.py @@ -141,6 +141,12 @@ def process_yaml(argv): sys.stderr.write("ERROR: project name contains a space\n") sys.exit(-1) + if 'language' in config: + project_language = ' '.join(config['language']) if isinstance(config['language'], list) else config['language'] + else: + sys.stderr.write("ERROR: you have to specify the project language(s) in autocmake.yml\n") + sys.exit(-1) + if 'min_cmake_version' in config: min_cmake_version = config['min_cmake_version'] else: @@ -179,7 +185,7 @@ def process_yaml(argv): # create CMakeLists.txt print('- generating CMakeLists.txt') - s = gen_cmakelists(project_name, min_cmake_version, default_build_type, relative_path, modules) + s = gen_cmakelists(project_name, project_language, min_cmake_version, default_build_type, relative_path, modules) with open(os.path.join(project_root, 'CMakeLists.txt'), 'w') as f: f.write('{0}\n'.format('\n'.join(s)))