def configure_mode(mode): BUILD_PATH = seastar_cmake.BUILD_PATHS[mode] CFLAGS = seastar_cmake.convert_strings_to_cmake_list( args.user_cflags, args.user_optflags if seastar_cmake.is_release_mode(mode) else '') LDFLAGS = seastar_cmake.convert_strings_to_cmake_list(args.user_ldflags) TRANSLATED_ARGS = [ '-DCMAKE_BUILD_TYPE={}'.format(MODE_TO_CMAKE_BUILD_TYPE[mode]), '-DCMAKE_C_COMPILER={}'.format(args.cc), '-DCMAKE_CXX_COMPILER={}'.format(args.cxx), '-DCMAKE_INSTALL_PREFIX={}'.format(args.install_prefix), '-DSeastar_API_LEVEL={}'.format(args.api_level), tr(args.exclude_tests, 'EXCLUDE_TESTS_FROM_ALL'), tr(args.exclude_apps, 'EXCLUDE_APPS_FROM_ALL'), tr(args.exclude_demos, 'EXCLUDE_DEMOS_FROM_ALL'), tr(CFLAGS, 'CXX_FLAGS'), tr(LDFLAGS, 'LD_FLAGS'), tr(args.cpp_dialect, 'CXX_DIALECT'), tr(args.dpdk, 'DPDK'), tr(infer_dpdk_machine(args.user_cflags), 'DPDK_MACHINE'), tr(args.hwloc, 'HWLOC', value_when_none='yes'), tr(args.alloc_failure_injection, 'ALLOC_FAILURE_INJECTION'), tr(args.task_backtrace, 'TASK_BACKTRACE'), tr(args.alloc_page_size, 'ALLOC_PAGE_SIZE'), tr(args.split_dwarf, 'SPLIT_DWARF'), tr(args.heap_profiling, 'HEAP_PROFILING'), tr(args.coroutines_ts, 'EXPERIMENTAL_COROUTINES_TS'), tr(args.unused_result_error, 'UNUSED_RESULT_ERROR'), ] ingredients_to_cook = set(args.cook) if args.dpdk: ingredients_to_cook.add('dpdk') # Generate a new build by pointing to the source directory. if ingredients_to_cook: # We need to use cmake-cooking for some dependencies. inclusion_arguments = [] for ingredient in ingredients_to_cook: inclusion_arguments.extend(['-i', ingredient]) ARGS = seastar_cmake.COOKING_BASIC_ARGS + inclusion_arguments + ['-d', BUILD_PATH, '--'] dir = seastar_cmake.ROOT_PATH else: # When building without cooked dependencies, we can invoke cmake directly. We can't call # cooking.sh, because without any -i parameters, it will try to build # everything. ARGS = ['cmake', '-G', 'Ninja', '../..'] dir = BUILD_PATH ARGS += TRANSLATED_ARGS if args.verbose: print("Running CMake in '{}' ...".format(dir)) print(" \\\n ".join(ARGS)) distutils.dir_util.mkpath(BUILD_PATH) subprocess.check_call(ARGS, shell=False, cwd=dir)
def configure_mode(mode): BUILD_PATH = seastar_cmake.BUILD_PATHS[mode] CFLAGS = seastar_cmake.convert_strings_to_cmake_list( args.user_cflags, args.user_optflags if seastar_cmake.is_release_mode(mode) else '') LDFLAGS = seastar_cmake.convert_strings_to_cmake_list(args.user_ldflags) TRANSLATED_ARGS = [ '-DCMAKE_BUILD_TYPE={}'.format(MODE_TO_CMAKE_BUILD_TYPE[mode]), '-DCMAKE_C_COMPILER={}'.format(args.cc), '-DCMAKE_CXX_COMPILER={}'.format(args.cxx), '-DCMAKE_INSTALL_PREFIX={}'.format(args.install_prefix), tr(args.exclude_tests, 'EXCLUDE_TESTS_FROM_ALL'), tr(args.exclude_apps, 'EXCLUDE_APPS_FROM_ALL'), tr(args.exclude_demos, 'EXCLUDE_DEMOS_FROM_ALL'), tr(CFLAGS, 'CXX_FLAGS'), tr(LDFLAGS, 'LD_FLAGS'), tr(args.cpp_dialect, 'CXX_DIALECT'), tr(args.dpdk, 'DPDK'), tr(args.hwloc, 'HWLOC', value_when_none='yes'), tr(args.gcc6_concepts, 'GCC6_CONCEPTS'), tr(args.alloc_failure_injector, 'ALLOC_FAILURE_INJECTOR'), tr(args.exception_workaround, 'EXCEPTION_SCALABILITY_WORKAROUND', value_when_none='yes'), tr(args.allocator_page_size, 'ALLOCATOR_PAGE_SIZE'), tr(args.cpp17_goodies, 'STD_OPTIONAL_VARIANT_STRINGVIEW'), ] # Generate a new build by pointing to the source directory. ARGS = seastar_cmake.COOKING_BASIC_ARGS + (['-i', 'dpdk'] if args.dpdk else []) + ['-d', BUILD_PATH, '--'] + TRANSLATED_ARGS print(ARGS) distutils.dir_util.mkpath(BUILD_PATH) subprocess.check_call(ARGS, shell=False, cwd=seastar_cmake.ROOT_PATH)
def configure_mode(mode): BUILD_PATH = seastar_cmake.BUILD_PATHS[mode] CFLAGS = seastar_cmake.convert_strings_to_cmake_list( args.user_cflags, args.user_optflags if seastar_cmake.is_release_mode(mode) else '') LDFLAGS = seastar_cmake.convert_strings_to_cmake_list(args.user_ldflags) TRANSLATED_ARGS = [ '-DCMAKE_BUILD_TYPE={}'.format(MODE_TO_CMAKE_BUILD_TYPE[mode]), '-DCMAKE_C_COMPILER={}'.format(args.cc), '-DCMAKE_CXX_COMPILER={}'.format(args.cxx), '-DCMAKE_INSTALL_PREFIX={}'.format(args.install_prefix), tr(args.exclude_tests, 'EXCLUDE_TESTS_FROM_ALL'), tr(args.exclude_apps, 'EXCLUDE_APPS_FROM_ALL'), tr(args.exclude_demos, 'EXCLUDE_DEMOS_FROM_ALL'), tr(CFLAGS, 'CXX_FLAGS'), tr(LDFLAGS, 'LD_FLAGS'), tr(args.cpp_dialect, 'CXX_DIALECT'), tr(args.dpdk, 'DPDK'), tr(infer_dpdk_machine(args.user_cflags), 'DPDK_MACHINE'), tr(args.hwloc, 'HWLOC', value_when_none='yes'), tr(args.gcc6_concepts, 'GCC6_CONCEPTS'), tr(args.alloc_failure_injection, 'ALLOC_FAILURE_INJECTION'), tr(args.exception_workaround, 'EXCEPTION_SCALABILITY_WORKAROUND', value_when_none='yes'), tr(args.alloc_page_size, 'ALLOC_PAGE_SIZE'), tr(args.cpp17_goodies, 'STD_OPTIONAL_VARIANT_STRINGVIEW'), tr(args.split_dwarf, 'SPLIT_DWARF'), tr(args.coroutines_ts, 'EXPERIMENTAL_COROUTINES_TS'), ] ingredients_to_cook = set(args.cook) if args.dpdk: ingredients_to_cook.add('dpdk') # Generate a new build by pointing to the source directory. if ingredients_to_cook: # We need to use cmake-cooking for some dependencies. inclusion_arguments = [] for ingredient in ingredients_to_cook: inclusion_arguments.extend(['-i', ingredient]) ARGS = seastar_cmake.COOKING_BASIC_ARGS + inclusion_arguments + ['-d', BUILD_PATH, '--'] dir = seastar_cmake.ROOT_PATH else: # When building without cooked dependencies, we can invoke cmake directly. We can't call # cooking.sh, because without any -i parameters, it will try to build # everything. ARGS = ['cmake', '-G', 'Ninja', '../..'] dir = BUILD_PATH ARGS += TRANSLATED_ARGS print(ARGS) distutils.dir_util.mkpath(BUILD_PATH) subprocess.check_call(ARGS, shell=False, cwd=dir)
def configure_mode(mode): BUILD_PATH = seastar_cmake.BUILD_PATHS[mode] CFLAGS = seastar_cmake.convert_strings_to_cmake_list( args.user_cflags, args.user_optflags if seastar_cmake.is_release_mode(mode) else '') LDFLAGS = seastar_cmake.convert_strings_to_cmake_list(args.user_ldflags) TRANSLATED_ARGS = [ '-DCMAKE_BUILD_TYPE={}'.format(MODE_TO_CMAKE_BUILD_TYPE[mode]), '-DCMAKE_C_COMPILER={}'.format(args.cc), '-DCMAKE_CXX_COMPILER={}'.format(args.cxx), '-DCMAKE_INSTALL_PREFIX={}'.format(args.install_prefix), tr(args.exclude_tests, 'EXCLUDE_TESTS_FROM_ALL'), tr(args.exclude_apps, 'EXCLUDE_APPS_FROM_ALL'), tr(args.exclude_demos, 'EXCLUDE_DEMOS_FROM_ALL'), tr(CFLAGS, 'CXX_FLAGS'), tr(LDFLAGS, 'LD_FLAGS'), tr(args.cpp_dialect, 'CXX_DIALECT'), tr(args.dpdk, 'DPDK'), tr(args.hwloc, 'HWLOC', value_when_none='yes'), tr(args.gcc6_concepts, 'GCC6_CONCEPTS'), tr(args.alloc_failure_injector, 'ALLOC_FAILURE_INJECTOR'), tr(args.exception_workaround, 'EXCEPTION_SCALABILITY_WORKAROUND', value_when_none='yes'), tr(args.allocator_page_size, 'ALLOCATOR_PAGE_SIZE'), tr(args.cpp17_goodies, 'STD_OPTIONAL_VARIANT_STRINGVIEW'), tr(args.split_dwarf, 'SPLIT_DWARF'), tr(args.coroutines_ts, 'EXPERIMENTAL_COROUTINES_TS'), ] # Generate a new build by pointing to the source directory. if args.dpdk: # When building with dpdk, we need to cook it first ARGS = seastar_cmake.COOKING_BASIC_ARGS + ['-i', 'dpdk','-d', BUILD_PATH, '--'] dir = seastar_cmake.ROOT_PATH else: # When building without dpdk, we can invoke cmake directly. We can't call # cooking.sh, because without any -i parameters, it will try to build # everything. ARGS = ['cmake', '-G', 'Ninja', '../..'] dir = BUILD_PATH ARGS += TRANSLATED_ARGS print(ARGS) distutils.dir_util.mkpath(BUILD_PATH) subprocess.check_call(ARGS, shell=False, cwd=dir)
def configure_mode(mode): BUILD_PATH = seastar_cmake.BUILD_PATHS[mode] CFLAGS = seastar_cmake.convert_strings_to_cmake_list( args.user_cflags, args.user_optflags if seastar_cmake.is_release_mode(mode) else '') LDFLAGS = seastar_cmake.convert_strings_to_cmake_list(args.user_ldflags) TRANSLATED_ARGS = [ '-DCMAKE_BUILD_TYPE={}'.format(MODE_TO_CMAKE_BUILD_TYPE[mode]), '-DCMAKE_C_COMPILER={}'.format(args.cc), '-DCMAKE_CXX_COMPILER={}'.format(args.cxx), '-DCMAKE_CXX_STANDARD={}'.format(args.cpp_standard), '-DCMAKE_INSTALL_PREFIX={}'.format(args.install_prefix), '-DCMAKE_EXPORT_COMPILE_COMMANDS={}'.format( 'yes' if args.cc_json else 'no'), '-DSeastar_API_LEVEL={}'.format(args.api_level), '-DSeastar_SCHEDULING_GROUPS_COUNT={}'.format( args.scheduling_groups_count), tr(args.exclude_tests, 'EXCLUDE_TESTS_FROM_ALL'), tr(args.exclude_apps, 'EXCLUDE_APPS_FROM_ALL'), tr(args.exclude_demos, 'EXCLUDE_DEMOS_FROM_ALL'), tr(CFLAGS, 'CXX_FLAGS'), tr(LDFLAGS, 'LD_FLAGS'), tr(args.dpdk, 'DPDK'), tr(infer_dpdk_machine(args.user_cflags), 'DPDK_MACHINE'), tr(args.hwloc, 'HWLOC', value_when_none='yes'), tr(args.io_uring, 'IO_URING', value_when_none=None), tr(args.alloc_failure_injection, 'ALLOC_FAILURE_INJECTION', value_when_none='DEFAULT'), tr(args.task_backtrace, 'TASK_BACKTRACE'), tr(args.alloc_page_size, 'ALLOC_PAGE_SIZE'), tr(args.split_dwarf, 'SPLIT_DWARF'), tr(args.heap_profiling, 'HEAP_PROFILING'), tr(args.deferred_action_require_noexcept, 'DEFERRED_ACTION_REQUIRE_NOEXCEPT'), tr(args.unused_result_error, 'UNUSED_RESULT_ERROR'), tr(args.debug_shared_ptr, 'DEBUG_SHARED_PTR', value_when_none='default'), ] ingredients_to_cook = set(args.cook) if args.dpdk: ingredients_to_cook.add('dpdk') # Generate a new build by pointing to the source directory. if ingredients_to_cook: # We need to use cmake-cooking for some dependencies. inclusion_arguments = [] for ingredient in ingredients_to_cook: inclusion_arguments.extend(['-i', ingredient]) ARGS = seastar_cmake.COOKING_BASIC_ARGS + inclusion_arguments + [ '-d', BUILD_PATH, '--' ] dir = seastar_cmake.ROOT_PATH else: # When building without cooked dependencies, we can invoke cmake directly. We can't call # cooking.sh, because without any -i parameters, it will try to build # everything. ARGS = ['cmake', '-G', 'Ninja', '../..'] dir = BUILD_PATH # filter out empty args, their values are actually "guess", # CMake should be able to figure it out. ARGS += filter(lambda arg: arg, TRANSLATED_ARGS) if args.verbose: print("Running CMake in '{}' ...".format(dir)) print(" \\\n ".join(ARGS)) os.makedirs(BUILD_PATH, exist_ok=True) subprocess.check_call(ARGS, shell=False, cwd=dir)