Skip to content

Commit

Permalink
THRIFT-5109 Misc Cmake build improvements
Browse files Browse the repository at this point in the history
Patch: Mario Emmenlauer

This closes #2026
This closes #2025
This closes #2021
  • Loading branch information
emmenlau authored and Jens-G committed Feb 23, 2020
1 parent f5a9a30 commit 61d5020
Show file tree
Hide file tree
Showing 5 changed files with 115 additions and 0 deletions.
8 changes: 8 additions & 0 deletions CMakeLists.txt
Expand Up @@ -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)
Expand Down
14 changes: 14 additions & 0 deletions build/cmake/DefineOptions.cmake
Expand Up @@ -101,6 +101,16 @@ else()
"BUILD_LIBRARIES;WITH_JAVA;JAVA_FOUND;GRADLEW_FOUND" OFF)
endif()

# Javascript
option(WITH_JAVASCRIPT "Build Javascript Thrift library" ON)
CMAKE_DEPENDENT_OPTION(BUILD_JAVASCRIPT "Build Javascript library" ON
"BUILD_LIBRARIES;WITH_JAVASCRIPT" OFF)

# NodeJS
option(WITH_NODEJS "Build NodeJS Thrift library" ON)
CMAKE_DEPENDENT_OPTION(BUILD_NODEJS "Build NodeJS library" ON
"BUILD_LIBRARIES;WITH_NODEJS" OFF)

# Python
option(WITH_PYTHON "Build Python Thrift library" ON)
find_package(PythonInterp QUIET) # for Python executable
Expand Down Expand Up @@ -182,6 +192,10 @@ else()
MESSAGE_DEP(JAVA_FOUND "Java Runtime missing")
MESSAGE_DEP(GRADLEW_FOUND "Gradle Wrapper missing")
endif()
message(STATUS " Build Javascript library: ${BUILD_JAVASCRIPT}")
MESSAGE_DEP(WITH_JAVASCRIPT "Disabled by WITH_JAVASCRIPT=OFF")
message(STATUS " Build NodeJS library: ${BUILD_NODEJS}")
MESSAGE_DEP(WITH_NODEJS "Disabled by WITH_NODEJS=OFF")
message(STATUS)
message(STATUS " Build Python library: ${BUILD_PYTHON}")
MESSAGE_DEP(WITH_PYTHON "Disabled by WITH_PYTHON=OFF")
Expand Down
4 changes: 4 additions & 0 deletions compiler/cpp/CMakeLists.txt
Expand Up @@ -116,6 +116,10 @@ set_target_properties(thrift-compiler PROPERTIES OUTPUT_NAME thrift)

target_link_libraries(thrift-compiler parse)

add_custom_command(TARGET thrift-compiler POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_SOURCE_DIR}/compiler/cpp"
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_BINARY_DIR}/bin/thrift${CMAKE_EXECUTABLE_SUFFIX}" "${CMAKE_SOURCE_DIR}/compiler/cpp/")

install(TARGETS thrift-compiler DESTINATION bin)

if(BUILD_TESTING)
Expand Down
45 changes: 45 additions & 0 deletions lib/js/CMakeLists.txt
@@ -0,0 +1,45 @@
#
# 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(ThriftJavascript ALL
COMMENT "Building Javascript library using npm + Grunt Wrapper"
COMMAND npm install
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})
44 changes: 44 additions & 0 deletions 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 npm"
COMMAND npm install
WORKING_DIRECTORY ${CMAKE_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})

0 comments on commit 61d5020

Please sign in to comment.