diff --git a/docs/after.png b/docs/after.png
new file mode 100644
index 0000000..fdd14d2
--- /dev/null
+++ b/docs/after.png
Binary files differ
diff --git a/docs/before.png b/docs/before.png
new file mode 100644
index 0000000..a6a1424
--- /dev/null
+++ b/docs/before.png
Binary files differ
diff --git a/docs/clion.md b/docs/clion.md
new file mode 100644
index 0000000..d6ae19a
--- /dev/null
+++ b/docs/clion.md
@@ -0,0 +1,72 @@
+# CLion project generator
+
+Soong can generate CLion projects. This is intended for source code editing
+only. Build should still be done via make/m/mm(a)/mmm(a).
+
+CMakeLists.txt project file generation is enabled via environment variable:
+
+```bash
+$ export SOONG_GEN_CMAKEFILES=1
+$ export SOONG_GEN_CMAKEFILES_DEBUG=1
+```
+
+You can then trigger a full build:
+
+```bash
+$ make -j64
+```
+or build only the project you are interested in:
+
+```bash
+$ make frameworks/native/service/libs/ui
+```
+
+Projects are generated in the ``out`` directory. In the case of libui, the path would
+be:
+
+```bash
+out/development/ide/clion/frameworks/native/libs/ui/libui-arm64-android/CMakeLists.txt
+```
+Note: The generator creates one folder per targetname-architecture-os combination.
+In the case of libui you endup with two projects:
+
+```bash
+$ ls out/development/ide/clion/frameworks/native/libs/ui
+libui-arm64-android libui-arm-android
+```
+
+### Edit multiple projects at once
+To combine several projects into one, you can create super projects
+and place them in:
+
+```bash
+development/ide/clion/[PATH_YOU_WANT]/..
+```
+
+These file will be symbolicaly linked in ``out/development/ide/clion``. All folders
+will also be created there.
+
+An example of a super project for surfaceflinger (using libui and libgui)
+located in development/ide/clion/frameworks/native:
+
+```
+cmake_minimum_required(VERSION 3.6)
+project(native)
+add_subdirectory(services/surfaceflinger)
+add_subdirectory(libs/ui/libui-arm64-android)
+add_subdirectory(libs/gui/libgui-arm64-android)
+```
+
+
+### Flattened filesystem
+
+Upon opening a project it looks like all the folder structure has been
+flattened:
+
+![Flattened View](before.png "")
+
+This is because you need to change the project root. Via Tools > CMake >
+Change Project Root:
+
+![Unflattened View](after.png "")
+
diff --git a/third_party/zip/Android.bp b/third_party/zip/Android.bp
index 044e6f8..ec89c0c 100644
--- a/third_party/zip/Android.bp
+++ b/third_party/zip/Android.bp
@@ -24,6 +24,7 @@
         "android.go",
     ],
     testSrcs: [
+        "android_test.go",
         "reader_test.go",
         "writer_test.go",
         "zip_test.go",
diff --git a/third_party/zip/android.go b/third_party/zip/android.go
index e2e46ff..f3b6055 100644
--- a/third_party/zip/android.go
+++ b/third_party/zip/android.go
@@ -32,6 +32,12 @@
 	fh := &fileHeader
 	fh.Flags |= 0x8
 
+	// The zip64 extras change between the Central Directory and Local File Header, while we use
+	// the same structure for both. The Local File Haeder is taken care of by us writing a data
+	// descriptor with the zip64 values. The Central Directory Entry is written by Close(), where
+	// the zip64 extra is automatically created and appended when necessary.
+	fh.Extra = stripZip64Extras(fh.Extra)
+
 	h := &header{
 		FileHeader: fh,
 		offset:     uint64(w.cw.count),
@@ -70,6 +76,29 @@
 	return err
 }
 
+// Strip any Zip64 extra fields
+func stripZip64Extras(input []byte) []byte {
+	ret := []byte{}
+
+	for len(input) >= 4 {
+		r := readBuf(input)
+		tag := r.uint16()
+		size := r.uint16()
+		if int(size) > len(r) {
+			break
+		}
+		if tag != zip64ExtraId {
+			ret = append(ret, input[:4+size]...)
+		}
+		input = input[4+size:]
+	}
+
+	// Keep any trailing data
+	ret = append(ret, input...)
+
+	return ret
+}
+
 // CreateCompressedHeader adds a file to the zip file using the provied
 // FileHeader for the file metadata.
 // It returns a Writer to which the already compressed file contents
diff --git a/third_party/zip/android_test.go b/third_party/zip/android_test.go
new file mode 100644
index 0000000..cdf66ff
--- /dev/null
+++ b/third_party/zip/android_test.go
@@ -0,0 +1,71 @@
+// Copyright 2017 Google Inc. All rights reserved.
+//
+// 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.
+
+package zip
+
+import (
+	"bytes"
+	"testing"
+)
+
+var stripZip64Testcases = []struct {
+	name string
+	in   []byte
+	out  []byte
+}{
+	{
+		name: "empty",
+		in:   []byte{},
+		out:  []byte{},
+	},
+	{
+		name: "trailing data",
+		in:   []byte{1, 2, 3},
+		out:  []byte{1, 2, 3},
+	},
+	{
+		name: "valid non-zip64 extra",
+		in:   []byte{2, 0, 2, 0, 1, 2},
+		out:  []byte{2, 0, 2, 0, 1, 2},
+	},
+	{
+		name: "two valid non-zip64 extras",
+		in:   []byte{2, 0, 2, 0, 1, 2, 2, 0, 0, 0},
+		out:  []byte{2, 0, 2, 0, 1, 2, 2, 0, 0, 0},
+	},
+	{
+		name: "simple zip64 extra",
+		in:   []byte{1, 0, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8},
+		out:  []byte{},
+	},
+	{
+		name: "zip64 extra and valid non-zip64 extra",
+		in:   []byte{1, 0, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 2, 0, 0, 0},
+		out:  []byte{2, 0, 0, 0},
+	},
+	{
+		name: "invalid extra",
+		in:   []byte{0, 0, 8, 0, 0, 0},
+		out:  []byte{0, 0, 8, 0, 0, 0},
+	},
+}
+
+func TestStripZip64Extras(t *testing.T) {
+	for _, testcase := range stripZip64Testcases {
+		got := stripZip64Extras(testcase.in)
+		if !bytes.Equal(got, testcase.out) {
+			t.Errorf("Failed testcase %s\ninput: %v\n want: %v\n  got: %v\n", testcase.name, testcase.in, testcase.out, got)
+		}
+	}
+}
