mirror of
https://github.com/valitydev/thrift.git
synced 2024-11-07 10:48:51 +00:00
102 lines
4.0 KiB
CMake
102 lines
4.0 KiB
CMake
#
|
|
# 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(ANDROID)
|
|
|
|
set(THRIFT_AAR outputs/aar/thrift-debug.aar outputs/aar/thrift-release.aar)
|
|
add_custom_command(
|
|
OUTPUT ${THRIFT_AAR}
|
|
COMMAND ${GRADLE_EXECUTABLE}
|
|
-p "${CMAKE_CURRENT_SOURCE_DIR}/android"
|
|
"-PbuildDir=${CMAKE_CURRENT_BINARY_DIR}/android/build" assemble
|
|
)
|
|
add_custom_target(thrift_aar ALL DEPENDS ${THRIFT_AAR})
|
|
|
|
else()
|
|
if(NOT JAVA_INSTALL_DIR)
|
|
if(IS_ABSOLUTE "${LIB_INSTALL_DIR}")
|
|
set(JAVA_INSTALL_DIR "${LIB_INSTALL_DIR}/java")
|
|
else()
|
|
set(JAVA_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/java")
|
|
endif()
|
|
endif()
|
|
|
|
if(IS_ABSOLUTE "${DOC_INSTALL_DIR}")
|
|
set(JAVA_DOC_INSTALL_DIR "${DOC_INSTALL_DIR}/java")
|
|
else()
|
|
set(JAVA_DOC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${DOC_INSTALL_DIR}/java")
|
|
endif()
|
|
|
|
set(PRELEASE "true")
|
|
if (CMAKE_BUILD_TYPE MATCHES DEBUG)
|
|
set(PRELEASE "false")
|
|
endif ()
|
|
|
|
file(GLOB_RECURSE THRIFTJAVA_SOURCES LIST_DIRECTORIES false
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/*")
|
|
add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/build/libs/libthrift.jar"
|
|
COMMENT "Building Java library using Gradle Wrapper"
|
|
COMMAND ${GRADLEW_EXECUTABLE} ${GRADLE_OPTS} assemble
|
|
--console=plain --no-daemon
|
|
-Prelease=${PRELEASE}
|
|
-Pthrift.version=${thrift_VERSION}
|
|
"-Pbuild.dir=${CMAKE_CURRENT_BINARY_DIR}/build"
|
|
DEPENDS ${THRIFTJAVA_SOURCES}
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
)
|
|
add_custom_target(ThriftJava ALL
|
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/build/libs/libthrift.jar")
|
|
|
|
# Enable publishing from CMake if the publishing information is provided
|
|
add_custom_target(MavenPublish
|
|
COMMENT "Publishing Java Library to Apache Maven staging"
|
|
DEPENDS ThriftJava
|
|
COMMAND ${GRADLEW_EXECUTABLE} ${GRADLE_OPTS} clean uploadArchives
|
|
--console=plain --no-daemon
|
|
-Prelease=${PRELEASE}
|
|
-Pthrift.version=${thrift_VERSION}
|
|
"-Pbuild.dir=${CMAKE_CURRENT_BINARY_DIR}/build"
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
)
|
|
|
|
# Hook the CMake install process to the results from make ALL.
|
|
# This works best when 'make all && sudo make install/fast' is used.
|
|
# Using slash to end the source location to avoid copying the directory path.
|
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/build/libs/
|
|
DESTINATION ${JAVA_INSTALL_DIR}
|
|
FILES_MATCHING PATTERN "libthrift-${thrift_VERSION}.jar")
|
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/build/deps/
|
|
DESTINATION ${JAVA_INSTALL_DIR}
|
|
FILES_MATCHING PATTERN "*.jar")
|
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/build/docs/javadoc/
|
|
DESTINATION ${JAVA_DOC_INSTALL_DIR})
|
|
|
|
if(BUILD_TESTING)
|
|
add_test(NAME JavaTest
|
|
COMMAND ${GRADLEW_EXECUTABLE} ${GRADLE_OPTS} test
|
|
--console=plain --no-daemon
|
|
-Prelease=${PRELEASE}
|
|
-Pthrift.version=${thrift_VERSION}
|
|
"-Pbuild.dir=${CMAKE_CURRENT_BINARY_DIR}/build"
|
|
"-Pthrift.compiler=${THRIFT_COMPILER}"
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
|
endif()
|
|
|
|
endif()
|