diff --git a/CMakeLists.txt b/CMakeLists.txt index 613c3ec9..e0b48e75 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,13 +30,9 @@ CHECK_CXX_COMPILER_FLAG(-Wno-error=nonnull-compare COMPILER_SUPPORTS_NONNULL) CHECK_CXX_COMPILER_FLAG(-std=c++14 COMPILER_SUPPORTS_CXX14) CHECK_CXX_COMPILER_FLAG(-std=c++11 COMPILER_SUPPORTS_CXX11) CHECK_CXX_COMPILER_FLAG(-std=c++0x COMPILER_SUPPORTS_CXX0X) -if(COMPILER_SUPPORTS_CXX14) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") -elseif(COMPILER_SUPPORTS_CXX11) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") -elseif(COMPILER_SUPPORTS_CXX0x) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") -endif() +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) if(COMPILER_SUPPORTS_CXX14) if(COMPILER_SUPPORTS_MISIDENT) @@ -50,6 +46,22 @@ endif() # find protobuf package # ------------------------------------------------------------------------------ find_package(Protobuf REQUIRED) +# find_package(Protobuf CONFIG REQUIRED) +# find_package(Protobuf CONFIG) +# if(NOT Protobuf_FOUND) +# find_package(Protobuf REQUIRED) +# endif() +set(PROTO_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated") +set(PROTO_IMPORT_DIRS "${CMAKE_CURRENT_LIST_DIR}/proto") +set(waflz_proto_files ${CMAKE_CURRENT_SOURCE_DIR}/proto/acl.proto) +# set(waflz_proto_files ${CMAKE_CURRENT_SOURCE_DIR}/proto/acl.proto action.proto rule.proto profile.proto event.proto request_info.proto scope.proto limit.proto) +add_library(proto-objects OBJECT "${CMAKE_CURRENT_SOURCE_DIR}/proto/acl.proto") +protobuf_generate( + LANGUAGE cpp + TARGET proto-objects + IMPORT_DIRS ${PROTO_IMPORT_DIRS} + PROTOC_OUT_DIR "${PROTO_BINARY_DIR}" +) # ------------------------------------------------------------------------------ # Display the current settings # ------------------------------------------------------------------------------ @@ -154,7 +166,6 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") # -------------------------------------------------------- # cc flags # -------------------------------------------------------- - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") # ------------------------------------------------------------------------------ # ASAN diff --git a/include/waflz/def.h b/include/waflz/def.h index 63fdd294..81e682f6 100644 --- a/include/waflz/def.h +++ b/include/waflz/def.h @@ -26,6 +26,7 @@ #if defined(__APPLE__) || defined(__darwin__) #include + #define RAPIDJSON_NOMEMBERITERATORCLASS 1 #else #include #endif diff --git a/src/jspb/jspb.cc b/src/jspb/jspb.cc index 0c70d054..e72f353c 100644 --- a/src/jspb/jspb.cc +++ b/src/jspb/jspb.cc @@ -508,14 +508,18 @@ static int32_t update_single_field(google::protobuf::Message& ao_msg, case google::protobuf::FieldDescriptor::TYPE_DOUBLE: { JSPB_TRACE("case: double\n"); - l_s = update_field(ao_msg, - a_ref, - a_field, - &google::protobuf::Reflection::SetDouble, - a_val, - &rapidjson::GenericValue >::GetDouble, - &rapidjson::GenericValue >::IsNumber, - "float"); + l_s = update_field< + void (google::protobuf::Reflection::*)(google::protobuf::Message*, const google::protobuf::FieldDescriptor*, double) const, + double (rapidjson::GenericValue >::*)() const, + bool (rapidjson::GenericValue >::*)() const>( + ao_msg, + a_ref, + a_field, + &google::protobuf::Reflection::SetDouble, + a_val, + &rapidjson::GenericValue >::GetDouble, + &rapidjson::GenericValue >::IsNumber, + "float"); break; } case google::protobuf::FieldDescriptor::TYPE_FLOAT: @@ -605,14 +609,19 @@ static int32_t update_single_field(google::protobuf::Message& ao_msg, case google::protobuf::FieldDescriptor::TYPE_STRING: { JSPB_TRACE("case: string\n"); - l_s = update_field(ao_msg, - a_ref, - a_field, - &google::protobuf::Reflection::SetString, - a_val, - &rapidjson::GenericValue >::GetString, - &rapidjson::GenericValue >::IsString, - "string"); + l_s = update_field< + void (google::protobuf::Reflection::*)(google::protobuf::Message*, const google::protobuf::FieldDescriptor*, const std::string) const, + const rapidjson::GenericValue>::Ch* (rapidjson::GenericValue >::*)() const, + bool (rapidjson::GenericValue >::*)() const + >( + ao_msg, + a_ref, + a_field, + &google::protobuf::Reflection::SetString, + a_val, + &rapidjson::GenericValue >::GetString, + &rapidjson::GenericValue >::IsString, + "string"); break; } case google::protobuf::FieldDescriptor::TYPE_GROUP: diff --git a/src/jspb/jspb.h b/src/jspb/jspb.h index 6d1a4cdf..1154aad1 100644 --- a/src/jspb/jspb.h +++ b/src/jspb/jspb.h @@ -12,6 +12,9 @@ //! ---------------------------------------------------------------------------- //! includes //! ---------------------------------------------------------------------------- +#if defined(__APPLE__) || defined(__darwin__) + #define RAPIDJSON_NOMEMBERITERATORCLASS 1 +#endif #include #include //! ----------------------------------------------------------------------------