Skip to content

Commit 7082407

Browse files
tsteinchwarr
authored andcommitted
[java] Add CMake integration for Java
1 parent a15ebf2 commit 7082407

File tree

26 files changed

+134
-26
lines changed

26 files changed

+134
-26
lines changed

.travis.yml

+2-8
Original file line numberDiff line numberDiff line change
@@ -107,16 +107,10 @@ script:
107107
- if [ "$FLAVOR" == "hs" ]; then ../build/compiler/build/gbc-tests/gbc-tests; fi
108108

109109

110+
- if [ "$FLAVOR" == "java" ]; then export PATH=$BOND_ROOT/build/compiler/build/gbc:$PATH; fi
110111
- if [ "$FLAVOR" == "java" ]; then BOND_JAVA=$BOND_ROOT/java; fi
111112
- if [ "$FLAVOR" == "java" ]; then cmake -DBOND_SKIP_GBC_TESTS=TRUE -DBOND_SKIP_CORE_TESTS=TRUE -DBOND_ENABLE_GRPC=FALSE ..; fi
112-
- if [ "$FLAVOR" == "java" ]; then make gbc; fi
113-
- if [ "$FLAVOR" == "java" ]; then export PATH=$BOND_ROOT/build/compiler/build/gbc:$PATH; fi
114-
- if [ "$FLAVOR" == "java" ]; then cd $BOND_JAVA/gradle-plugin; gradle build; fi
115-
- if [ "$FLAVOR" == "java" ]; then PLUGIN_VERSION=`sed -n "s/version ['\"]\(.*\)['\"]/\1/p" build.gradle`; fi
116-
- if [ "$FLAVOR" == "java" ]; then mvn install:install-file -Dfile=build/libs/bond-gradle-$PLUGIN_VERSION.jar -DgroupId=org.bondlib -DartifactId=gradle -Dversion=$PLUGIN_VERSION -Dpackaging=jar; fi
117-
- if [ "$FLAVOR" == "java" ]; then cd $BOND_JAVA/core; gradle build; fi
118-
- if [ "$FLAVOR" == "java" ]; then cd $BOND_JAVA/compat; gradle build; fi
119-
- if [ "$FLAVOR" == "java" ]; then cd $BOND_ROOT/build; fi
113+
- if [ "$FLAVOR" == "java" ]; then make java; fi
120114
- if [ "$FLAVOR" == "java" ]; then cmake -DBOND_SKIP_GBC_TESTS=TRUE -DBOND_SKIP_CORE_TESTS=TRUE -DBOND_ENABLE_GRPC=FALSE ..; fi
121115
- if [ "$FLAVOR" == "java" ]; then make --jobs 2 check; fi
122116
# Run Java examples.

CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ if (NOT BOND_GBC_PATH)
4040
endif()
4141

4242
add_subdirectory (cpp)
43+
add_subdirectory (java)
4344
add_subfolder (doc "doc")
4445
add_python_subdirectory (python)
4546
add_subdirectory (examples)

cmake/FindJavaBuildTools.cmake

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
find_program (GRADLE_EXECUTABLE gradle)
2+
find_program (MAVEN_EXECUTABLE mvn)
3+
4+
set (GRADLE_FOUND FALSE)
5+
if (GRADLE_EXECUTABLE)
6+
set (GRADLE_FOUND TRUE)
7+
execute_process (
8+
COMMAND ${GRADLE_EXECUTABLE} --version
9+
OUTPUT_VARIABLE gradle_version)
10+
message (STATUS "gradle found at ${GRADLE_EXECUTABLE}")
11+
message (STATUS "${gradle_version}")
12+
else()
13+
message (STATUS "gradle was not found. Java will be disabled.")
14+
endif()
15+
16+
set (MAVEN_FOUND FALSE)
17+
if (MAVEN_EXECUTABLE)
18+
set (MAVEN_FOUND TRUE)
19+
execute_process (
20+
COMMAND ${MAVEN_EXECUTABLE} --version
21+
OUTPUT_VARIABLE maven_version)
22+
message (STATUS "maven found at ${MAVEN_EXECUTABLE}")
23+
message (STATUS "${maven_version}")
24+
else()
25+
message (STATUS "maven was not found. Java will be disabled.")
26+
endif()

cmake/FindStack.cmake

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ IF (STACK_EXECUTABLE)
1212
string (STRIP ${stack_version} stack_version)
1313

1414
MESSAGE(STATUS "Stack found at ${STACK_EXECUTABLE}. ${stack_version}")
15-
ELSE (STACK_EXECUTABLE)
15+
ELSE()
1616
MESSAGE(FATAL_ERROR "Stack was not found.")
17-
ENDIF (STACK_EXECUTABLE)
17+
ENDIF()

cmake/Java.cmake

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
cmake_minimum_required (VERSION 2.8.12)
2+
3+
include (CMakeParseArguments)
4+
include (Folders)
5+
6+
find_package (JavaBuildTools)
7+
8+
# This function intentionally doesn't accept or configure SOURCES. cmake should
9+
# call gradle unconditionally, and gradle will take care of up-to-dateness.
10+
function (add_gradle_build target)
11+
set (oneValueArgs GRADLE_TARGET)
12+
set (multiValueArgs DEPENDS)
13+
cmake_parse_arguments (arg "${flagArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
14+
15+
if (NOT arg_GRADLE_TARGET)
16+
set (arg_GRADLE_TARGET build)
17+
endif()
18+
19+
add_custom_command (
20+
DEPENDS gbc
21+
COMMAND
22+
${GRADLE_EXECUTABLE} --console plain ${arg_GRADLE_TARGET}
23+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
24+
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/build/java/${target})
25+
26+
add_custom_target ("${target}"
27+
DEPENDS gbc ${arg_DEPENDS}
28+
${CMAKE_CURRENT_BINARY_DIR}/build/java/${target})
29+
30+
add_target_to_folder("${target}")
31+
add_dependencies(java "${target}")
32+
endfunction()
33+
34+
function (add_maven_install target)
35+
set (oneValueArgs AFTER_BUILD JAR)
36+
cmake_parse_arguments (arg "${flagArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
37+
38+
# The path given to -DpomFile is hard-coded to match the output path of
39+
# gradle's maven plugin.
40+
add_custom_command (
41+
COMMAND
42+
${MAVEN_EXECUTABLE}
43+
install:install-file
44+
-DpomFile=build/poms/pom-default.xml
45+
-Dfile=build/libs/${arg_JAR}
46+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
47+
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/build/java/${target})
48+
49+
add_custom_target ("${target}"
50+
DEPENDS ${arg_AFTER_BUILD}
51+
${CMAKE_CURRENT_BINARY_DIR}/build/java/${target})
52+
53+
add_target_to_folder("${target}")
54+
add_dependencies(java "${target}")
55+
endfunction()

examples/java/core/blob/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
}
99

1010
dependencies {
11-
classpath 'org.bondlib:gradle:+'
11+
classpath 'org.bondlib:bond-gradle:+'
1212
}
1313
}
1414

examples/java/core/enumerations/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
}
99

1010
dependencies {
11-
classpath 'org.bondlib:gradle:+'
11+
classpath 'org.bondlib:bond-gradle:+'
1212
}
1313
}
1414

examples/java/core/generic_tree/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
}
99

1010
dependencies {
11-
classpath 'org.bondlib:gradle:+'
11+
classpath 'org.bondlib:bond-gradle:+'
1212
}
1313
}
1414

examples/java/core/generics/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
}
99

1010
dependencies {
11-
classpath 'org.bondlib:gradle:+'
11+
classpath 'org.bondlib:bond-gradle:+'
1212
}
1313
}
1414

examples/java/core/imports/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
}
99

1010
dependencies {
11-
classpath 'org.bondlib:gradle:+'
11+
classpath 'org.bondlib:bond-gradle:+'
1212
}
1313
}
1414

examples/java/core/inheritance/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
}
99

1010
dependencies {
11-
classpath 'org.bondlib:gradle:+'
11+
classpath 'org.bondlib:bond-gradle:+'
1212
}
1313
}
1414

examples/java/core/nothing_default/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
}
99

1010
dependencies {
11-
classpath 'org.bondlib:gradle:+'
11+
classpath 'org.bondlib:bond-gradle:+'
1212
}
1313
}
1414

examples/java/core/polymorphic_container/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
}
99

1010
dependencies {
11-
classpath 'org.bondlib:gradle:+'
11+
classpath 'org.bondlib:bond-gradle:+'
1212
}
1313
}
1414

examples/java/core/protocol_versions/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
}
99

1010
dependencies {
11-
classpath 'org.bondlib:gradle:+'
11+
classpath 'org.bondlib:bond-gradle:+'
1212
}
1313
}
1414

examples/java/core/record_streaming/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
}
99

1010
dependencies {
11-
classpath 'org.bondlib:gradle:+'
11+
classpath 'org.bondlib:bond-gradle:+'
1212
}
1313
}
1414

examples/java/core/runtime_schema/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
}
99

1010
dependencies {
11-
classpath 'org.bondlib:gradle:+'
11+
classpath 'org.bondlib:bond-gradle:+'
1212
}
1313
}
1414

examples/java/core/schema_view/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
}
99

1010
dependencies {
11-
classpath 'org.bondlib:gradle:+'
11+
classpath 'org.bondlib:bond-gradle:+'
1212
}
1313
}
1414

examples/java/core/serialization/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
}
99

1010
dependencies {
11-
classpath 'org.bondlib:gradle:+'
11+
classpath 'org.bondlib:bond-gradle:+'
1212
}
1313
}
1414

examples/java/core/untagged_protocols/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
}
99

1010
dependencies {
11-
classpath 'org.bondlib:gradle:+'
11+
classpath 'org.bondlib:bond-gradle:+'
1212
}
1313
}
1414

java/CMakeLists.txt

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Top-level meta-target to build the entire Java world. Implicitly depends on
2+
# all targets created by add_gradle_build.
3+
add_custom_target (java)
4+
5+
add_subdirectory (gradle-plugin)
6+
add_subdirectory (core)
7+
add_subdirectory (compat)

java/compat/CMakeLists.txt

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
cmake_minimum_required (VERSION 2.8.12)
2+
3+
set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake)
4+
5+
include (Java)
6+
7+
add_gradle_build (java-compat DEPENDS java-core)

java/compat/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
}
99

1010
dependencies {
11-
classpath 'org.bondlib:gradle:+'
11+
classpath 'org.bondlib:bond-gradle:+'
1212
}
1313
}
1414

java/core/CMakeLists.txt

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
cmake_minimum_required (VERSION 2.8.12)
2+
3+
set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake)
4+
5+
include (Java)
6+
7+
add_gradle_build (java-core DEPENDS gradle-plugin-install)

java/core/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ buildscript {
1111
}
1212

1313
dependencies {
14-
classpath 'org.bondlib:gradle:+'
14+
classpath 'org.bondlib:bond-gradle:+'
1515
}
1616
}
1717

java/gradle-plugin/CMakeLists.txt

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
cmake_minimum_required (VERSION 2.8.12)
2+
3+
set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake)
4+
5+
include (Java)
6+
7+
add_gradle_build (gradle-plugin GRADLE_TARGET install)
8+
add_maven_install (gradle-plugin-install
9+
AFTER_BUILD gradle-plugin
10+
JAR bond-gradle-1.0.jar)

java/gradle-plugin/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
apply plugin: 'groovy'
2+
apply plugin: 'maven'
23

34
group 'org.bondlib'
45
version '1.0'

0 commit comments

Comments
 (0)