Merge changes I3568de9e,Iab67b329
* changes:
Add compile time test to c2hal
Remove hw_device_t struct from c2hal output
diff --git a/c2hal/Android.bp b/c2hal/Android.bp
index f901d24..a634ed6 100644
--- a/c2hal/Android.bp
+++ b/c2hal/Android.bp
@@ -12,6 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+subdirs = [
+ "test",
+]
+
+
cc_binary_host {
name: "c2hal",
srcs: [
diff --git a/c2hal/CompositeDeclaration.cpp b/c2hal/CompositeDeclaration.cpp
index a9eba59..70cf775 100644
--- a/c2hal/CompositeDeclaration.cpp
+++ b/c2hal/CompositeDeclaration.cpp
@@ -16,6 +16,7 @@
#include "CompositeDeclaration.h"
#include "FunctionDeclaration.h"
+#include "VarDeclaration.h"
#include "Declaration.h"
#include <algorithm>
@@ -116,7 +117,20 @@
auto it = mFieldDeclarations->begin();
while (it != mFieldDeclarations->end()) {
if((*it)->decType() != FunctionDeclaration::type()) {
- nonFpDecs->push_back(*it);
+ bool keep = true;
+ if((*it)->decType() == VarDeclaration::type()) {
+ VarDeclaration* var = (VarDeclaration *)(*it);
+ // Conventional HALs were all required to have
+ // a member of this type.
+ // This member is no longer needed for HIDL
+ if(var->getType()->isHwDevice()) {
+ keep = false;
+ }
+ }
+
+ if (keep) {
+ nonFpDecs->push_back(*it);
+ }
it = mFieldDeclarations->erase(it);
} else {
it++;
@@ -156,4 +170,4 @@
mEnumTypeName = name;
}
-} //namespace android
\ No newline at end of file
+} //namespace android
diff --git a/c2hal/Type.cpp b/c2hal/Type.cpp
index 6b6c721..7d4d9ad 100644
--- a/c2hal/Type.cpp
+++ b/c2hal/Type.cpp
@@ -233,6 +233,15 @@
(*mQualifiers)[0]->qualification == Type::Qualifier::VOID;
}
+bool Type::isHwDevice() const {
+ if (mQualifiers->size() < 2) {
+ return false;
+ }
+
+ return (*mQualifiers)[0]->qualification == Type::Qualifier::STRUCT &&
+ (*mQualifiers)[1]->qualification == Type::Qualifier::ID &&
+ (*mQualifiers)[1]->id == "hw_device_t";
+}
std::string Type::removeLastId() {
if(mQualifiers == NULL || mQualifiers->size() == 0) {
diff --git a/c2hal/Type.h b/c2hal/Type.h
index 0147d4a..8cd0477 100644
--- a/c2hal/Type.h
+++ b/c2hal/Type.h
@@ -88,6 +88,7 @@
const std::string decorateName(const std::string &name) const;
bool isVoid() const;
+ bool isHwDevice() const;
std::string removeLastId();
private:
@@ -113,4 +114,4 @@
} // namespace android
-#endif // TYPE_H_
\ No newline at end of file
+#endif // TYPE_H_
diff --git a/c2hal/test/Android.bp b/c2hal/test/Android.bp
new file mode 100644
index 0000000..0df857a
--- /dev/null
+++ b/c2hal/test/Android.bp
@@ -0,0 +1,58 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+genrule {
+ name: "c2hal_test_genc++_headers",
+ tool: "c2hal",
+ cmd: "$tool -o $genDir/c2hal_test/1.0 -p android.hardware.c2hal_test@1.0 $in && out/soong/host/linux-x86/bin/hidl-gen -o $genDir -Lc++ -r android.hardware:$genDir android.hardware.c2hal_test@1.0::ISimple",
+ srcs: [
+ "simple.h",
+ ],
+ out: [
+ "android/hardware/c2hal_test/1.0/BnSimple.h",
+ "android/hardware/c2hal_test/1.0/BpSimple.h",
+ "android/hardware/c2hal_test/1.0/BsSimple.h",
+ "android/hardware/c2hal_test/1.0/IHwSimple.h",
+ "android/hardware/c2hal_test/1.0/ISimple.h",
+ ],
+}
+
+genrule {
+ name: "c2hal_test_genc++",
+ tool: "c2hal",
+ cmd: "$tool -o $genDir/c2hal_test/1.0 -p android.hardware.c2hal_test@1.0 $in && out/soong/host/linux-x86/bin/hidl-gen -o $genDir -Lc++ -r android.hardware:$genDir android.hardware.c2hal_test@1.0::ISimple",
+ srcs: [
+ "simple.h",
+ ],
+ out: [
+ "android/hardware/c2hal_test/1.0/SimpleAll.cpp",
+ ],
+}
+
+cc_library_shared {
+ name: "c2hal_test",
+ generated_headers: ["c2hal_test_genc++_headers"],
+ generated_sources: ["c2hal_test_genc++"],
+ export_generated_headers: ["c2hal_test_genc++_headers"],
+ shared_libs: [
+ "libhidl",
+ "libhwbinder",
+ "libutils",
+ "libcutils",
+ ],
+ required: [
+ "hidl-gen",
+ ]
+}