diff --git a/.travis.yml b/.travis.yml index 2646ebe..b298424 100644 --- a/.travis.yml +++ b/.travis.yml @@ -53,14 +53,16 @@ matrix: - libboost-all-dev - os: osx - osx_image: xcode6.4 + osx_image: xcode7.3 compiler: gcc - env: SOURCES=homebrew + env: + - SOURCES=homebrew install: - | if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then - brew install cmake boost python gcc open-mpi + brew install cmake boost python open-mpi + brew reinstall gcc pip install virtualenv elif [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then pip install --user virtualenv 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/modules/cc.cmake b/modules/cc.cmake index e624ca7..a4f6882 100644 --- a/modules/cc.cmake +++ b/modules/cc.cmake @@ -25,8 +25,6 @@ # export: "'CC={0}'.format(arguments['--cc'])" # define: "'-DEXTRA_CFLAGS=\"{0}\"'.format(arguments['--extra-cc-flags'])" -enable_language(C) - if(NOT DEFINED CMAKE_C_COMPILER_ID) message(FATAL_ERROR "CMAKE_C_COMPILER_ID variable is not defined!") endif() diff --git a/modules/cxx.cmake b/modules/cxx.cmake index c44209c..3c2c612 100644 --- a/modules/cxx.cmake +++ b/modules/cxx.cmake @@ -25,14 +25,12 @@ # export: "'CXX={0}'.format(arguments['--cxx'])" # define: "'-DEXTRA_CXXFLAGS=\"{0}\"'.format(arguments['--extra-cxx-flags'])" -enable_language(CXX) - -if(NOT DEFINED CMAKE_C_COMPILER_ID) - message(FATAL_ERROR "CMAKE_C_COMPILER_ID variable is not defined!") +if(NOT DEFINED CMAKE_CXX_COMPILER_ID) + message(FATAL_ERROR "CMAKE_CXX_COMPILER_ID variable is not defined!") endif() -if(NOT CMAKE_C_COMPILER_WORKS) - message(FATAL_ERROR "CMAKE_C_COMPILER_WORKS is false!") +if(NOT CMAKE_CXX_COMPILER_WORKS) + message(FATAL_ERROR "CMAKE_CXX_COMPILER_WORKS is false!") endif() if(DEFINED EXTRA_CXXFLAGS) diff --git a/modules/fc.cmake b/modules/fc.cmake index d798ddb..22f6d58 100644 --- a/modules/fc.cmake +++ b/modules/fc.cmake @@ -29,8 +29,6 @@ # export: "'FC={0}'.format(arguments['--fc'])" # define: "'-DEXTRA_FCFLAGS=\"{0}\"'.format(arguments['--extra-fc-flags'])" -enable_language(Fortran) - set(CMAKE_Fortran_MODULE_DIRECTORY ${PROJECT_BINARY_DIR}/modules) include_directories(${PROJECT_BINARY_DIR}/modules) 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..c0a9749 100644 --- a/test/cxx_accelerate/cmake/autocmake.yml +++ b/test/cxx_accelerate/cmake/autocmake.yml @@ -1,5 +1,8 @@ name: example min_cmake_version: 2.8 +language: +- CXX +- C 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/extra_cmake_options/cmake/autocmake.yml b/test/extra_cmake_options/cmake/autocmake.yml index 7b24802..c6cf288 100644 --- a/test/extra_cmake_options/cmake/autocmake.yml +++ b/test/extra_cmake_options/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/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)))