diff options
author | Mario Emmenlauer <memmenlauer@biodataanalysis.de> | 2019-10-23 17:32:34 +0200 |
---|---|---|
committer | Jens Geyer <jensg@apache.org> | 2020-04-22 21:17:33 +0200 |
commit | 93171d2482f98d77887874afc3bbb73f0bbb65c2 (patch) | |
tree | d377bd31b8cfcaae4538b72e15a2baa83dc42c24 | |
parent | 6064696ae08e9764f588143f8ffd380b95405aca (diff) | |
download | thrift-93171d2482f98d77887874afc3bbb73f0bbb65c2.tar.gz |
THRIFT-5109 Misc Cmake build improvements
Patch: Mario Emmenlauer
This closes #2094
-rw-r--r-- | CMakeLists.txt | 8 | ||||
-rw-r--r-- | build/cmake/DefineOptions.cmake | 2 | ||||
-rw-r--r-- | compiler/cpp/CMakeLists.txt | 7 | ||||
-rw-r--r-- | lib/js/CMakeLists.txt | 52 | ||||
-rw-r--r-- | lib/js/Makefile.am | 1 | ||||
-rw-r--r-- | lib/nodejs/CMakeLists.txt | 44 | ||||
-rwxr-xr-x | lib/nodejs/Makefile.am | 1 |
7 files changed, 114 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index f2e682ac2..18e52f638 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -113,6 +113,14 @@ if(BUILD_JAVA) 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 8357160b1..8c7a4a964 100644 --- a/build/cmake/DefineOptions.cmake +++ b/build/cmake/DefineOptions.cmake @@ -108,7 +108,7 @@ endif() # 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 92b0a5f3e..a65a419de 100644 --- a/compiler/cpp/CMakeLists.txt +++ b/compiler/cpp/CMakeLists.txt @@ -115,6 +115,13 @@ set_target_properties(thrift-compiler PROPERTIES OUTPUT_NAME thrift) 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 000000000..c312a21f5 --- /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 b53404264..4906d7ddb 100644 --- a/lib/js/Makefile.am +++ b/lib/js/Makefile.am @@ -57,6 +57,7 @@ EXTRA_DIST = \ 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 000000000..5059044b2 --- /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 71068b58f..67f6ff6a9 100755 --- a/lib/nodejs/Makefile.am +++ b/lib/nodejs/Makefile.am @@ -42,4 +42,5 @@ EXTRA_DIST = \ lib \ test \ coding_standards.md \ + CMakeLists.txt \ README.md |