diff --git a/CMakeLists.txt b/CMakeLists.txt
index f2e682a..18e52f6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -113,6 +113,14 @@
     add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lib/java)
 endif()
 
+if(BUILD_JAVASCRIPT)
+    add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lib/js)
+endif()
+
+if(BUILD_NODEJS)
+    add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lib/nodejs)
+endif()
+
 if(BUILD_PYTHON)
     add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lib/py)
     if(BUILD_TESTING)
diff --git a/build/cmake/DefineOptions.cmake b/build/cmake/DefineOptions.cmake
index 8357160..8c7a4a9 100644
--- a/build/cmake/DefineOptions.cmake
+++ b/build/cmake/DefineOptions.cmake
@@ -108,7 +108,7 @@
 # Javascript
 option(WITH_JAVASCRIPT "Build Javascript Thrift library" ON)
 CMAKE_DEPENDENT_OPTION(BUILD_JAVASCRIPT "Build Javascript library" ON
-                       "BUILD_LIBRARIES;WITH_JAVASCRIPT" OFF)
+                       "BUILD_LIBRARIES;WITH_JAVASCRIPT;NOT WIN32; NOT CYGWIN" OFF)
 
 # NodeJS
 option(WITH_NODEJS "Build NodeJS Thrift library" ON)
diff --git a/compiler/cpp/CMakeLists.txt b/compiler/cpp/CMakeLists.txt
index 92b0a5f..a65a419 100644
--- a/compiler/cpp/CMakeLists.txt
+++ b/compiler/cpp/CMakeLists.txt
@@ -115,6 +115,13 @@
 
 target_link_libraries(thrift-compiler parse)
 
+add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/thrift${CMAKE_EXECUTABLE_SUFFIX}"
+    DEPENDS thrift-compiler
+    COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_FILE:thrift-compiler>" "${CMAKE_CURRENT_SOURCE_DIR}/"
+    COMMENT "Copying the thrift compiler to the source tree for use by downstream targets")
+add_custom_target(copy-thrift-compiler
+    DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/thrift${CMAKE_EXECUTABLE_SUFFIX}")
+
 install(TARGETS thrift-compiler DESTINATION bin)
 
 if(BUILD_TESTING)
diff --git a/lib/js/CMakeLists.txt b/lib/js/CMakeLists.txt
new file mode 100644
index 0000000..c312a21
--- /dev/null
+++ b/lib/js/CMakeLists.txt
@@ -0,0 +1,52 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+#
+
+if(NOT JAVASCRIPT_INSTALL_DIR)
+    if(IS_ABSOLUTE "${LIB_INSTALL_DIR}")
+        set(JAVASCRIPT_INSTALL_DIR "${LIB_INSTALL_DIR}/js")
+    else()
+        set(JAVASCRIPT_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/js")
+    endif()
+endif()
+
+if(IS_ABSOLUTE "${DOC_INSTALL_DIR}")
+    set(JAVASCRIPT_DOC_INSTALL_DIR "${DOC_INSTALL_DIR}/js")
+else()
+    set(JAVASCRIPT_DOC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${DOC_INSTALL_DIR}/js")
+endif()
+
+add_custom_target(ThriftJavascriptPreDeps ALL
+    COMMENT "Installing Javascript dependencies using npm"
+    DEPENDS copy-thrift-compiler
+    COMMAND npm install
+    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+)
+
+add_custom_target(ThriftJavascript ALL
+    COMMENT "Building Javascript library using npx Grunt wrapper"
+    DEPENDS ThriftJavascriptPreDeps
+    COMMAND npx grunt
+    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+)
+
+install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/dist/"
+        DESTINATION "${JAVASCRIPT_INSTALL_DIR}"
+        FILES_MATCHING PATTERN "thrift*.js")
+install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/doc/"
+        DESTINATION "${JAVASCRIPT_DOC_INSTALL_DIR}")
diff --git a/lib/js/Makefile.am b/lib/js/Makefile.am
index b534042..4906d7d 100644
--- a/lib/js/Makefile.am
+++ b/lib/js/Makefile.am
@@ -57,6 +57,7 @@
 	Gruntfile.js \
 	package.json \
 	package-lock.json \
+	CMakeLists.txt \
 	README.md \
 	src \
 	test
diff --git a/lib/nodejs/CMakeLists.txt b/lib/nodejs/CMakeLists.txt
new file mode 100644
index 0000000..5059044
--- /dev/null
+++ b/lib/nodejs/CMakeLists.txt
@@ -0,0 +1,44 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+#
+
+if(NOT NODEJS_INSTALL_DIR)
+    if(IS_ABSOLUTE "${LIB_INSTALL_DIR}")
+        set(NODEJS_INSTALL_DIR "${LIB_INSTALL_DIR}/nodejs")
+    else()
+        set(NODEJS_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/nodejs")
+    endif()
+endif()
+
+# Currently no doc
+#if(IS_ABSOLUTE "${DOC_INSTALL_DIR}")
+#    set(NODEJS_DOC_INSTALL_DIR "${DOC_INSTALL_DIR}/nodejs")
+#else()
+#    set(NODEJS_DOC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${DOC_INSTALL_DIR}/nodejs")
+#endif()
+
+add_custom_target(ThriftNodeJS ALL
+    COMMENT "Installing NodeJS dependencies with npm"
+    COMMAND npm install
+    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../"
+)
+
+install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/lib/"
+        DESTINATION "${NODEJS_INSTALL_DIR}")
+#install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/doc/"
+#        DESTINATION "${NODEJS_DOC_INSTALL_DIR}")
diff --git a/lib/nodejs/Makefile.am b/lib/nodejs/Makefile.am
index 71068b5..67f6ff6 100755
--- a/lib/nodejs/Makefile.am
+++ b/lib/nodejs/Makefile.am
@@ -42,4 +42,5 @@
 	lib \
 	test \
 	coding_standards.md \
+	CMakeLists.txt \
 	README.md
