Skip to content

Commit aef4805

Browse files
authored
Add GridTools legacy support (#10)
Provides API compatibility with GridTools 1.x, should be removed once GridTools 2.x is released. - wrappers for all GT_/gt_ prefixed functions/structs/macros - function duplication for ADL mechanism in fortran_array_adapter
1 parent c221c69 commit aef4805

26 files changed

Lines changed: 480 additions & 30 deletions

CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ include(CTest)
99
set(REQUIRED_BOOST_VERSION 1.58)
1010
find_package(Boost ${REQUIRED_BOOST_VERSION} REQUIRED)
1111

12+
option(CPP_BINDGEN_GT_LEGACY "Enables the legacy mode for API compatibility with GridTools 1.x" OFF)
13+
mark_as_advanced(CPP_BINDGEN_GT_LEGACY)
14+
1215
# if used via FetchContent/add_subdirectory() we need to make the add_bindings_library() available here
1316
include(${CMAKE_CURRENT_LIST_DIR}/cmake/bindings.cmake)
1417

cmake/cpp_bindgen.cmake.in

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,28 @@
2626
# - <library_name>_c the C-bindings with <library_name> linked to it
2727
# - <library_name>_fortran the Fortran-bindings with <library_name> linked to it
2828

29+
include_guard()
30+
2931
option(GT_ENABLE_BINDINGS_GENERATION "If turned off, bindings will not be generated." ON)
3032

3133
# variables are unset after use for scoping, they need to be redefined in the macros
3234
set(__C_BINDINGS_SOURCE_DIR @__C_BINDINGS_SOURCE_DIR@)
3335
set(__C_BINDINGS_INCLUDE_DIR @__C_BINDINGS_INCLUDE_DIR@)
3436

37+
add_library(cpp_bindgen_interface INTERFACE)
38+
target_include_directories(cpp_bindgen_interface INTERFACE ${__C_BINDINGS_INCLUDE_DIR})
39+
target_compile_features(cpp_bindgen_interface INTERFACE cxx_std_11)
40+
if(CPP_BINDGEN_GT_LEGACY)
41+
target_compile_definitions(cpp_bindgen_interface INTERFACE CPP_BINDGEN_GT_LEGACY)
42+
endif()
43+
3544
add_library(cpp_bindgen_generator ${__C_BINDINGS_SOURCE_DIR}/cpp_bindgen/generator.cpp)
3645
# PUBLIC to make export.hpp available in the sources passed to add_bindings_library()
37-
target_include_directories(cpp_bindgen_generator PUBLIC ${__C_BINDINGS_INCLUDE_DIR})
38-
target_compile_features(cpp_bindgen_generator PUBLIC cxx_std_11)
3946
target_link_libraries(cpp_bindgen_generator PUBLIC Boost::boost)
47+
target_link_libraries(cpp_bindgen_generator PUBLIC cpp_bindgen_interface)
4048

4149
add_library(c_bindings_handle ${__C_BINDINGS_SOURCE_DIR}/cpp_bindgen/handle.cpp)
42-
target_include_directories(c_bindings_handle PRIVATE ${__C_BINDINGS_INCLUDE_DIR})
43-
target_compile_features(c_bindings_handle PRIVATE cxx_std_11)
44-
target_link_libraries(cpp_bindgen_generator PRIVATE Boost::boost) #TODO make an interface target for options
50+
target_link_libraries(c_bindings_handle PUBLIC cpp_bindgen_interface)
4551

4652
unset(__C_BINDINGS_SOURCE_DIR)
4753
unset(__C_BINDINGS_INCLUDE_DIR)
@@ -55,19 +61,21 @@ unset(__C_BINDINGS_INCLUDE_DIR)
5561
# be created by a call to cpp_bindgen_enable_fortran_library().
5662
function(cpp_bindgen_enable_fortran_library target_name)
5763
set(__C_BINDINGS_SOURCE_DIR @__C_BINDINGS_SOURCE_DIR@)
64+
set(__C_BINDINGS_CMAKE_DIR @__C_BINDINGS_CMAKE_DIR@)
5865

5966
if(CMAKE_Fortran_COMPILER_LOADED)
6067
if(NOT TARGET fortran_bindings_handle)
6168
add_library(fortran_bindings_handle ${__C_BINDINGS_SOURCE_DIR}/cpp_bindgen/array_descriptor.f90 ${__C_BINDINGS_SOURCE_DIR}/cpp_bindgen/handle.f90)
6269
target_link_libraries(fortran_bindings_handle PUBLIC c_bindings_handle)
6370
target_include_directories(fortran_bindings_handle PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
71+
include(${__C_BINDINGS_CMAKE_DIR}/fortran_helpers.cmake)
72+
gen_enable_fortran_preprocessing_on_target(fortran_bindings_handle)
6473
endif()
6574
if(NOT TARGET ${target_name}_fortran)
6675
set_source_files_properties(GT_${${target_name}_fortran_bindings_path} PROPERTIES GENERATED TRUE)
6776
add_library(${target_name}_fortran EXCLUDE_FROM_ALL ${GT_${target_name}_fortran_bindings_path})
6877
target_link_libraries(${target_name}_fortran PUBLIC ${target_name})
6978
target_link_libraries(${target_name}_fortran PUBLIC fortran_bindings_handle)
70-
target_include_directories(${target_name}_fortran PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
7179
add_dependencies(${target_name}_fortran ${target_name}_declarations)
7280
endif()
7381
elseif(NOT ${ARGN}) # internal: the second (optional) parameter can be used to surpress this fatal error
@@ -136,14 +144,16 @@ function(cpp_bindgen_add_library target_name)
136144
message(FATAL_ERROR "Cross-compilation for bindings is enabled: no bindings will be generated, but "
137145
"${bindings_c_decl_filename} and/or "
138146
"${bindings_fortran_decl_filename} "
139-
"are missing. Generate the bindings and consider making them part of your repository.")
147+
"are missing. Generate the bindings and consider making them part of your repository.")
140148
endif()
141149
endif()
142150

143151
# bindings c library
144152
add_library(${target_name}_c INTERFACE)
145153
target_link_libraries(${target_name}_c INTERFACE ${target_name})
146154
target_link_libraries(${target_name}_c INTERFACE c_bindings_handle)
155+
target_link_libraries(${target_name}_c INTERFACE cpp_bindgen_interface)
156+
147157
add_dependencies(${target_name}_c ${target_name}_declarations)
148158

149159
# bindings Fortran library

cmake/export.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ install(
3333
${CMAKE_CURRENT_BINARY_DIR}/cpp_bindgen-config-version.cmake
3434
DESTINATION lib/cmake
3535
)
36-
36+
3737
set(__C_BINDINGS_CMAKE_DIR "\${cpp_bindgen_MODULE_PATH}") #TODO refactor the variable names cpp_bindgen_MODULE_PATH, etc.
3838
set(__C_BINDINGS_SOURCE_DIR "\${cpp_bindgen_SOURCES_PATH}")
3939
set(__C_BINDINGS_INCLUDE_DIR "\${cpp_bindgen_INCLUDE_PATH}")
@@ -46,6 +46,7 @@ unset(__C_BINDINGS_INCLUDE_DIR)
4646

4747
set(CMAKE_SOURCES
4848
"${PROJECT_SOURCE_DIR}/cmake/cpp_bindgen_generate.cmake"
49+
"${PROJECT_SOURCE_DIR}/cmake/fortran_helpers.cmake"
4950
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/build-install/lib/cmake/cpp_bindgen.cmake"
5051
)
5152
set(CBINDINGS_SOURCES

cmake/fortran_helpers.cmake

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
function(gen_enable_fortran_openacc_on_target target)
2+
# TODO check if find_package(OpenACC) solves this problem
3+
if(CMAKE_Fortran_COMPILER_ID STREQUAL "Cray")
4+
target_compile_options(${target} PRIVATE $<$<COMPILE_LANGUAGE:Fortran>:-h acc>)
5+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
6+
target_compile_options(${target} PRIVATE $<$<COMPILE_LANGUAGE:Fortran>:-fopenacc>)
7+
set_target_properties(${target} PROPERTIES APPEND_STRING PROPERTY LINK_FLAGS -fopenacc)
8+
else()
9+
message(FATAL_ERROR "OpenACC is not configured for this compiler.")
10+
endif()
11+
endfunction()
12+
13+
function(gen_enable_fortran_preprocessing_on_target target)
14+
if (CMAKE_Fortran_COMPILER_ID STREQUAL "Cray")
15+
target_compile_options(${target} PRIVATE $<$<COMPILE_LANGUAGE:Fortran>:-eF>)
16+
else()
17+
target_compile_options(${target} PRIVATE $<$<COMPILE_LANGUAGE:Fortran>:-cpp>)
18+
endif()
19+
endfunction()

include/cpp_bindgen/array_descriptor.h

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,19 @@ enum gen_fortran_array_kind {
2121
gen_fk_Float,
2222
gen_fk_Double,
2323
gen_fk_LongDouble,
24-
gen_fk_SignedChar
24+
gen_fk_SignedChar,
25+
26+
#ifdef CPP_BINDGEN_GT_LEGACY // remove once GT is at v2.0
27+
gt_fk_Bool = gen_fk_Bool,
28+
gt_fk_Int = gen_fk_Int,
29+
gt_fk_Short = gen_fk_Int,
30+
gt_fk_Long = gen_fk_Long,
31+
gt_fk_LongLong = gen_fk_LongLong,
32+
gt_fk_Float = gen_fk_Float,
33+
gt_fk_Double = gen_fk_Double,
34+
gt_fk_LongDouble = gen_fk_LongDouble,
35+
gt_fk_SignedChar = gen_fk_SignedChar
36+
#endif
2537
};
2638
typedef enum gen_fortran_array_kind gen_fortran_array_kind;
2739

@@ -34,3 +46,7 @@ struct gen_fortran_array_descriptor {
3446
// TODO: add support for strides, bounds end type gen_fortran_array_descriptor
3547
};
3648
typedef struct gen_fortran_array_descriptor gen_fortran_array_descriptor;
49+
50+
#ifdef CPP_BINDGEN_GT_LEGACY // remove once GT is at v2.0
51+
typedef struct gen_fortran_array_descriptor gt_fortran_array_descriptor;
52+
#endif
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/*
2+
* GridTools
3+
*
4+
* Copyright (c) 2014-2019, ETH Zurich
5+
* All rights reserved.
6+
*
7+
* Please, refer to the LICENSE file in the root directory.
8+
* SPDX-License-Identifier: BSD-3-Clause
9+
*/
10+
#pragma once
11+
// remove this file once GT is at v2.0
12+
13+
#warning "The use of this header is deprecated, use #include <cpp_bindgen/export.hpp>"
14+
15+
#include <cpp_bindgen/export.hpp>
16+
17+
#define GT_EXPORT_BINDING_WITH_SIGNATURE(...) GEN_EXPORT_BINDING_WITH_SIGNATURE(__VA_ARGS__)
18+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED(__VA_ARGS__)
19+
#define GT_EXPORT_BINDING(...) GEN_EXPORT_BINDING(__VA_ARGS__)
20+
#define GT_EXPORT_GENERIC_BINDING(...) GEN_EXPORT_GENERIC_BINDING(__VA_ARGS__)
21+
#define GT_EXPORT_GENERIC_BINDING_WRAPPED(...) GEN_EXPORT_GENERIC_BINDING_WRAPPED(__VA_ARGS__)
22+
23+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_0(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_0(__VA_ARGS__)
24+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_1(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_1(__VA_ARGS__)
25+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_2(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_2(__VA_ARGS__)
26+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_3(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_3(__VA_ARGS__)
27+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_4(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_4(__VA_ARGS__)
28+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_5(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_5(__VA_ARGS__)
29+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_6(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_6(__VA_ARGS__)
30+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_7(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_7(__VA_ARGS__)
31+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_8(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_8(__VA_ARGS__)
32+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_9(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_9(__VA_ARGS__)
33+
34+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_0(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_0(__VA_ARGS__)
35+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_1(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_1(__VA_ARGS__)
36+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_2(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_2(__VA_ARGS__)
37+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_3(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_3(__VA_ARGS__)
38+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_4(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_4(__VA_ARGS__)
39+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_5(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_5(__VA_ARGS__)
40+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_6(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_6(__VA_ARGS__)
41+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_7(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_7(__VA_ARGS__)
42+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_8(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_8(__VA_ARGS__)
43+
#define GT_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_9(...) GEN_EXPORT_BINDING_WITH_SIGNATURE_WRAPPED_9(__VA_ARGS__)
44+
45+
#define GT_EXPORT_BINDING_0(...) GEN_EXPORT_BINDING_0(__VA_ARGS__)
46+
#define GT_EXPORT_BINDING_1(...) GEN_EXPORT_BINDING_1(__VA_ARGS__)
47+
#define GT_EXPORT_BINDING_2(...) GEN_EXPORT_BINDING_2(__VA_ARGS__)
48+
#define GT_EXPORT_BINDING_3(...) GEN_EXPORT_BINDING_3(__VA_ARGS__)
49+
#define GT_EXPORT_BINDING_4(...) GEN_EXPORT_BINDING_4(__VA_ARGS__)
50+
#define GT_EXPORT_BINDING_5(...) GEN_EXPORT_BINDING_5(__VA_ARGS__)
51+
#define GT_EXPORT_BINDING_6(...) GEN_EXPORT_BINDING_6(__VA_ARGS__)
52+
#define GT_EXPORT_BINDING_7(...) GEN_EXPORT_BINDING_7(__VA_ARGS__)
53+
#define GT_EXPORT_BINDING_8(...) GEN_EXPORT_BINDING_8(__VA_ARGS__)
54+
#define GT_EXPORT_BINDING_9(...) GEN_EXPORT_BINDING_9(__VA_ARGS__)
55+
56+
#define GT_EXPORT_BINDING_WRAPPED_0(...) GEN_EXPORT_BINDING_WRAPPED_0(__VA_ARGS__)
57+
#define GT_EXPORT_BINDING_WRAPPED_1(...) GEN_EXPORT_BINDING_WRAPPED_1(__VA_ARGS__)
58+
#define GT_EXPORT_BINDING_WRAPPED_2(...) GEN_EXPORT_BINDING_WRAPPED_2(__VA_ARGS__)
59+
#define GT_EXPORT_BINDING_WRAPPED_3(...) GEN_EXPORT_BINDING_WRAPPED_3(__VA_ARGS__)
60+
#define GT_EXPORT_BINDING_WRAPPED_4(...) GEN_EXPORT_BINDING_WRAPPED_4(__VA_ARGS__)
61+
#define GT_EXPORT_BINDING_WRAPPED_5(...) GEN_EXPORT_BINDING_WRAPPED_5(__VA_ARGS__)
62+
#define GT_EXPORT_BINDING_WRAPPED_6(...) GEN_EXPORT_BINDING_WRAPPED_6(__VA_ARGS__)
63+
#define GT_EXPORT_BINDING_WRAPPED_7(...) GEN_EXPORT_BINDING_WRAPPED_7(__VA_ARGS__)
64+
#define GT_EXPORT_BINDING_WRAPPED_8(...) GEN_EXPORT_BINDING_WRAPPED_8(__VA_ARGS__)
65+
#define GT_EXPORT_BINDING_WRAPPED_9(...) GEN_EXPORT_BINDING_WRAPPED_9(__VA_ARGS__)

include/cpp_bindgen/fortran_array_view.hpp

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,21 @@ namespace cpp_bindgen {
9292

9393
return descriptor;
9494
}
95+
96+
#ifdef CPP_BINDGEN_GT_LEGACY // remove once GT is at v2.0
97+
template <class T>
98+
enable_if_t<(T::gt_view_rank::value > 0) && std::is_arithmetic<typename T::gt_view_element_type>::value &&
99+
(T::gt_is_acc_present::value == T::gt_is_acc_present::value),
100+
gen_fortran_array_descriptor>
101+
get_fortran_view_meta(T *) {
102+
gen_fortran_array_descriptor descriptor;
103+
descriptor.type = fortran_array_element_kind<typename T::gt_view_element_type>::value;
104+
descriptor.rank = T::gt_view_rank::value;
105+
descriptor.is_acc_present = T::gt_is_acc_present::value;
106+
107+
return descriptor;
108+
}
109+
#endif
95110
} // namespace get_fortran_view_meta_impl
96111
using get_fortran_view_meta_impl::get_fortran_view_meta;
97112
/**
@@ -151,6 +166,14 @@ namespace cpp_bindgen {
151166
std::declval<gen_fortran_array_descriptor *>(), std::declval<T *>())),
152167
T>::value>> : std::true_type {};
153168

169+
#ifdef CPP_BINDGEN_GT_LEGACY // remove once GT is at v2.0
170+
template <class T>
171+
struct is_fortran_array_convertible<T,
172+
enable_if_t<std::is_same<decltype(gt_make_fortran_array_view(
173+
std::declval<gen_fortran_array_descriptor *>(), std::declval<T *>())),
174+
T>::value>> : std::true_type {};
175+
#endif
176+
154177
/**
155178
* @brief A type is fortran_array_bindable if it is fortran_array_convertible
156179
*
@@ -206,4 +229,32 @@ namespace cpp_bindgen {
206229
make_fortran_array_view(gen_fortran_array_descriptor *descriptor) {
207230
return gen_make_fortran_array_view(descriptor, (T *){nullptr});
208231
}
232+
233+
#ifdef CPP_BINDGEN_GT_LEGACY // remove once GT is at v2.0
234+
template <class T>
235+
enable_if_t<std::is_same<decltype(gt_make_fortran_array_view(
236+
std::declval<gen_fortran_array_descriptor *>(), std::declval<T *>())),
237+
T>::value,
238+
T>
239+
make_fortran_array_view(gen_fortran_array_descriptor *descriptor) {
240+
return gt_make_fortran_array_view(descriptor, (T *){nullptr});
241+
}
242+
#endif
209243
} // namespace cpp_bindgen
244+
245+
#ifdef CPP_BINDGEN_GT_LEGACY // remove once GT is at v2.0
246+
namespace gridtools {
247+
namespace c_bindings {
248+
// TODO comment
249+
250+
using cpp_bindgen::fortran_array_element_kind;
251+
using cpp_bindgen::is_fortran_array_bindable;
252+
using cpp_bindgen::is_fortran_array_convertible;
253+
using cpp_bindgen::is_fortran_array_view_inspectable;
254+
using cpp_bindgen::is_fortran_array_wrappable;
255+
256+
using cpp_bindgen::make_fortran_array_view;
257+
using cpp_bindgen::get_fortran_view_meta_impl::get_fortran_view_meta;
258+
} // namespace c_bindings
259+
} // namespace gridtools
260+
#endif

include/cpp_bindgen/generator.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ namespace cpp_bindgen {
290290
strm << wrap_line(tmp_strm.str(), " ");
291291
strm << " use iso_c_binding\n";
292292
if (has_array_descriptor<CSignature>::value)
293-
strm << " use array_descriptor\n";
293+
strm << " use gen_array_descriptor\n";
294294
for_each_param<CSignature>(fortran_param_type_from_c_f{},
295295
[&](const std::string &type_name, int i) { strm << " " << type_name << " :: arg" << i << "\n"; });
296296
return strm << " end "
@@ -341,7 +341,7 @@ namespace cpp_bindgen {
341341

342342
strm << " use iso_c_binding\n";
343343
if (has_array_descriptor<CSignature>::value) {
344-
strm << " use array_descriptor\n";
344+
strm << " use gen_array_descriptor\n";
345345
}
346346
for_each_param<CppSignature>(fortran_param_type_from_cpp_f{}, [&](const std::string &type_name, int i) {
347347
strm << " " << type_name << ", target :: arg" << i << "\n";

include/cpp_bindgen/handle.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,17 @@ struct gen_handle;
1414
#ifdef __cplusplus
1515

1616
extern "C" void gen_release(gen_handle const *);
17+
#ifdef CPP_BINDGEN_GT_LEGACY // remove once GT is at v2.0
18+
extern "C" void gt_release(gen_handle const *);
19+
#endif
1720

1821
#else
1922

2023
typedef struct gen_handle gen_handle;
2124
void gen_release(gen_handle *);
25+
#ifdef CPP_BINDGEN_GT_LEGACY // remove once GT is at v2.0
26+
typedef struct gen_handle gt_handle;
27+
void gt_release(gen_handle *);
28+
#endif
2229

2330
#endif

jenkins/build.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,9 @@ cmake ..
5656
nice make -j8
5757
./driver
5858

59+
# test gt legacy mode
60+
cd ${cwd}
61+
mkdir -p build_legacy && cd build_legacy
62+
cmake .. -DCMAKE_INSTALL_PREFIX=${cwd}/install -DCPP_BINDGEN_GT_LEGACY=ON
63+
nice make -j8 install
64+
ctest .

0 commit comments

Comments
 (0)