You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by an...@apache.org on 2017/12/06 01:33:42 UTC

[4/4] mesos git commit: Moved Java build code to `java/CMakeLists.txt`.

Moved Java build code to `java/CMakeLists.txt`.

The Java build code was slightly modified when moved:

The Protobuf version was changed from being hardcoded to using the
variable `${PROTOBUF_VERSION}` defined in
`3rdparty/cmake/Versions.cmake`.

The source file paths were updated to the new path, e.g.
`java/src/org/apache/mesos/Executor.java` ->
`src/org/apache/mesos/Executor.java`.

The `mesos-jar` target was given the dependency `mesos-protobufs`, which
is accurate but was missing.

Review: https://reviews.apache.org/r/63340


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/a9943318
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/a9943318
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/a9943318

Branch: refs/heads/master
Commit: a9943318364e12d3d74018d8d44dd74d166ddd5d
Parents: 75ebbbe
Author: Andrew Schwartzmeyer <an...@schwartzmeyer.com>
Authored: Thu Oct 26 12:09:02 2017 -0700
Committer: Andrew Schwartzmeyer <an...@schwartzmeyer.com>
Committed: Tue Dec 5 17:32:18 2017 -0800

----------------------------------------------------------------------
 src/CMakeLists.txt      | 129 +------------------------------------------
 src/java/CMakeLists.txt | 129 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 130 insertions(+), 128 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/a9943318/src/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index a76ba1e..8da64e8 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -105,134 +105,7 @@ endif ()
 # BUILD JAVA ARTIFACTS.
 #######################
 if (HAS_JAVA)
-  # Build the Mesos JAR.
-  #
-  # NOTE: We do not utilize CMake's `UseJava` module for a few reasons:
-  #   (1) `add_jar()` calls `javac`, but we use Maven.
-  #   (2) `add_jar()` does not support something like `IMPORTED`.
-  #   (3) `create_javah()` checks the existence of each JAR in the given class
-  #       path at configuration time, even though it depends on `mesos-jar` to
-  #       run Maven at build time. Coupled with (1) and (2) this makes it
-  #       impossible to use.
-  set(MESOS_JAR ${CMAKE_CURRENT_BINARY_DIR}/java/target/mesos-${MESOS_PACKAGE_VERSION}.jar)
-  set(PROTOBUF_JAR ${CMAKE_CURRENT_BINARY_DIR}/java/target/dependency/protobuf-java-3.5.0.jar)
-
-  # This file is generated into the build tree.
-  set(MESOS_JAVA_LIBRARY java/generated/org/apache/mesos/MesosNativeLibrary.java)
-  configure_file(${MESOS_JAVA_LIBRARY}.in ${MESOS_JAVA_LIBRARY})
-
-  set(MESOS_JAR_SRC
-    java/src/org/apache/mesos/ExecutorDriver.java
-    java/src/org/apache/mesos/Executor.java
-    java/src/org/apache/mesos/Log.java
-    java/src/org/apache/mesos/MesosExecutorDriver.java
-    java/src/org/apache/mesos/MesosSchedulerDriver.java
-    java/src/org/apache/mesos/SchedulerDriver.java
-    java/src/org/apache/mesos/Scheduler.java
-    java/src/org/apache/mesos/state/AbstractState.java
-    java/src/org/apache/mesos/state/InMemoryState.java
-    java/src/org/apache/mesos/state/LevelDBState.java
-    java/src/org/apache/mesos/state/LogState.java
-    java/src/org/apache/mesos/state/State.java
-    java/src/org/apache/mesos/state/Variable.java
-    java/src/org/apache/mesos/state/ZooKeeperState.java
-    java/src/org/apache/mesos/v1/scheduler/V1Mesos.java
-    java/src/org/apache/mesos/v1/scheduler/Mesos.java
-    java/src/org/apache/mesos/v1/scheduler/Scheduler.java
-    java/src/org/apache/mesos/v1/scheduler/V0Mesos.java
-    ${CMAKE_CURRENT_BINARY_DIR}/${MESOS_JAVA_LIBRARY})
-
-  configure_file(java/mesos.pom.in java/mesos.pom)
-
-  add_custom_command(
-    COMMENT "Building ${MESOS_JAR} using Maven..."
-    OUTPUT ${MESOS_JAR}
-    COMMAND mvn -B -f mesos.pom clean package
-    DEPENDS ${MESOS_JAR_SRC} ${JAVA_PROTOBUF_SRC}
-    WORKING_DIRECTORY java)
-
-  add_custom_target(mesos-jar DEPENDS ${MESOS_JAR})
-
-  # TODO(andschwa): Build the Example JAR.
-  set(EXAMPLE_JAR_SRC
-    examples/java/TestExceptionFramework.java
-    examples/java/TestExecutor.java
-    examples/java/TestFramework.java
-    examples/java/TestLog.java
-    examples/java/TestMultipleExecutorsFramework.java
-    examples/java/V1TestFramework.java)
-
-  set(JAVA_SRC
-    java/jni/convert.cpp
-    java/jni/construct.cpp
-    java/jni/org_apache_mesos_Log.cpp
-    java/jni/org_apache_mesos_MesosExecutorDriver.cpp
-    java/jni/org_apache_mesos_MesosNativeLibrary.cpp
-    java/jni/org_apache_mesos_MesosSchedulerDriver.cpp
-    java/jni/org_apache_mesos_state_AbstractState.cpp
-    java/jni/org_apache_mesos_state_LevelDBState.cpp
-    java/jni/org_apache_mesos_state_LogState.cpp
-    java/jni/org_apache_mesos_state_Variable.cpp
-    java/jni/org_apache_mesos_state_ZooKeeperState.cpp
-    java/jni/org_apache_mesos_v1_scheduler_V1Mesos.cpp
-    java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp
-    jvm/jvm.cpp
-    jvm/org/apache/log4j.cpp
-    jvm/org/apache/zookeeper.cpp)
-
-  # These are generated and so must be included.
-  set(JAVA_H
-    java/jni/org_apache_mesos_Log.h
-    java/jni/org_apache_mesos_MesosExecutorDriver.h
-    java/jni/org_apache_mesos_MesosSchedulerDriver.h
-    java/jni/org_apache_mesos_state_AbstractState.h
-    java/jni/org_apache_mesos_state_LevelDBState.h
-    java/jni/org_apache_mesos_state_LogState.h
-    java/jni/org_apache_mesos_state_Variable.h
-    java/jni/org_apache_mesos_state_ZooKeeperState.h
-    java/jni/org_apache_mesos_v1_scheduler_V1Mesos.h
-    java/jni/org_apache_mesos_v1_scheduler_V0Mesos.h)
-
-  set(JAVA_CLASSES
-    org.apache.mesos.Log
-    org.apache.mesos.MesosExecutorDriver
-    org.apache.mesos.MesosSchedulerDriver
-    org.apache.mesos.state.AbstractState
-    org.apache.mesos.state.LevelDBState
-    org.apache.mesos.state.LogState
-    org.apache.mesos.state.Variable
-    org.apache.mesos.state.ZooKeeperState
-    org.apache.mesos.v1.scheduler.V1Mesos
-    org.apache.mesos.v1.scheduler.V0Mesos)
-
-  # This generates the header files.
-  if (WIN32)
-    set(COLON ";")
-  else ()
-    set(COLON ":")
-  endif ()
-
-  add_custom_command(
-    OUTPUT ${JAVA_H}
-    COMMAND ${Java_JAVAH_EXECUTABLE} -d java/jni -classpath "${MESOS_JAR}${COLON}${PROTOBUF_JAR}" ${JAVA_CLASSES}
-    DEPENDS mesos-jar make_bin_jni_dir)
-
-  # We include the headers here to establish the dependency
-  # on the above custom command.
-  add_library(mesos-java ${JAVA_SRC} ${JAVA_H})
-
-  target_link_libraries(
-    mesos-java
-    mesos-protobufs
-    process
-    zookeeper
-    ${JNI_LIBRARIES})
-
-  target_include_directories(
-    mesos-java PUBLIC
-    ${JNI_INCLUDE_DIRS}
-    ${CMAKE_CURRENT_BINARY_DIR}/java/jni
-    ${MESOS_PUBLIC_INCLUDE_DIR})
+  add_subdirectory(java)
 endif ()
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/a9943318/src/java/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/src/java/CMakeLists.txt b/src/java/CMakeLists.txt
new file mode 100644
index 0000000..29422e9
--- /dev/null
+++ b/src/java/CMakeLists.txt
@@ -0,0 +1,129 @@
+# BUILD JAVA ARTIFACTS.
+#######################
+# Build the Mesos JAR.
+#
+# NOTE: We do not utilize CMake's `UseJava` module for a few reasons:
+#   (1) `add_jar()` calls `javac`, but we use Maven.
+#   (2) `add_jar()` does not support something like `IMPORTED`.
+#   (3) `create_javah()` checks the existence of each JAR in the given class
+#       path at configuration time, even though it depends on `mesos-jar` to
+#       run Maven at build time. Coupled with (1) and (2) this makes it
+#       impossible to use.
+set(MESOS_JAR ${CMAKE_CURRENT_BINARY_DIR}/target/mesos-${MESOS_PACKAGE_VERSION}.jar)
+set(PROTOBUF_JAR ${CMAKE_CURRENT_BINARY_DIR}/target/dependency/protobuf-java-${PROTOBUF_VERSION}.jar)
+
+# This file is generated into the build tree.
+set(MESOS_JAVA_LIBRARY generated/org/apache/mesos/MesosNativeLibrary.java)
+configure_file(${MESOS_JAVA_LIBRARY}.in ${MESOS_JAVA_LIBRARY})
+
+set(MESOS_JAR_SRC
+  src/org/apache/mesos/ExecutorDriver.java
+  src/org/apache/mesos/Executor.java
+  src/org/apache/mesos/Log.java
+  src/org/apache/mesos/MesosExecutorDriver.java
+  src/org/apache/mesos/MesosSchedulerDriver.java
+  src/org/apache/mesos/SchedulerDriver.java
+  src/org/apache/mesos/Scheduler.java
+  src/org/apache/mesos/state/AbstractState.java
+  src/org/apache/mesos/state/InMemoryState.java
+  src/org/apache/mesos/state/LevelDBState.java
+  src/org/apache/mesos/state/LogState.java
+  src/org/apache/mesos/state/State.java
+  src/org/apache/mesos/state/Variable.java
+  src/org/apache/mesos/state/ZooKeeperState.java
+  src/org/apache/mesos/v1/scheduler/V1Mesos.java
+  src/org/apache/mesos/v1/scheduler/Mesos.java
+  src/org/apache/mesos/v1/scheduler/Scheduler.java
+  src/org/apache/mesos/v1/scheduler/V0Mesos.java
+  ${CMAKE_CURRENT_BINARY_DIR}/${MESOS_JAVA_LIBRARY})
+
+configure_file(mesos.pom.in mesos.pom)
+
+add_custom_command(
+  COMMENT "Building ${MESOS_JAR} using Maven..."
+  OUTPUT ${MESOS_JAR}
+  COMMAND mvn -B -f mesos.pom clean package
+  DEPENDS ${MESOS_JAR_SRC} ${JAVA_PROTOBUF_SRC})
+
+add_custom_target(mesos-jar DEPENDS ${MESOS_JAR} mesos-protobufs)
+
+# TODO(andschwa): Build the Example JAR.
+set(EXAMPLE_JAR_SRC
+  ../examples/java/TestExceptionFramework.java
+  ../examples/java/TestExecutor.java
+  ../examples/java/TestFramework.java
+  ../examples/java/TestLog.java
+  ../examples/java/TestMultipleExecutorsFramework.java
+  ../examples/java/V1TestFramework.java)
+
+set(JAVA_SRC
+  jni/convert.cpp
+  jni/construct.cpp
+  jni/org_apache_mesos_Log.cpp
+  jni/org_apache_mesos_MesosExecutorDriver.cpp
+  jni/org_apache_mesos_MesosNativeLibrary.cpp
+  jni/org_apache_mesos_MesosSchedulerDriver.cpp
+  jni/org_apache_mesos_state_AbstractState.cpp
+  jni/org_apache_mesos_state_LevelDBState.cpp
+  jni/org_apache_mesos_state_LogState.cpp
+  jni/org_apache_mesos_state_Variable.cpp
+  jni/org_apache_mesos_state_ZooKeeperState.cpp
+  jni/org_apache_mesos_v1_scheduler_V1Mesos.cpp
+  jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp
+  ../jvm/jvm.cpp
+  ../jvm/org/apache/log4j.cpp
+  ../jvm/org/apache/zookeeper.cpp)
+
+# These are generated and so must be included.
+set(JAVA_H
+  jni/org_apache_mesos_Log.h
+  jni/org_apache_mesos_MesosExecutorDriver.h
+  jni/org_apache_mesos_MesosSchedulerDriver.h
+  jni/org_apache_mesos_state_AbstractState.h
+  jni/org_apache_mesos_state_LevelDBState.h
+  jni/org_apache_mesos_state_LogState.h
+  jni/org_apache_mesos_state_Variable.h
+  jni/org_apache_mesos_state_ZooKeeperState.h
+  jni/org_apache_mesos_v1_scheduler_V1Mesos.h
+  jni/org_apache_mesos_v1_scheduler_V0Mesos.h)
+
+set(JAVA_CLASSES
+  org.apache.mesos.Log
+  org.apache.mesos.MesosExecutorDriver
+  org.apache.mesos.MesosSchedulerDriver
+  org.apache.mesos.state.AbstractState
+  org.apache.mesos.state.LevelDBState
+  org.apache.mesos.state.LogState
+  org.apache.mesos.state.Variable
+  org.apache.mesos.state.ZooKeeperState
+  org.apache.mesos.v1.scheduler.V1Mesos
+  org.apache.mesos.v1.scheduler.V0Mesos)
+
+# This generates the header files.
+if (WIN32)
+  set(COLON ";")
+else ()
+  set(COLON ":")
+endif ()
+
+add_custom_command(
+  OUTPUT ${JAVA_H}
+  COMMAND ${Java_JAVAH_EXECUTABLE} -d jni -classpath "${MESOS_JAR}${COLON}${PROTOBUF_JAR}" ${JAVA_CLASSES}
+  DEPENDS mesos-jar make_bin_jni_dir)
+
+# We include the headers here to establish the dependency
+# on the above custom command.
+add_library(mesos-java ${JAVA_SRC} ${JAVA_H})
+
+target_link_libraries(
+  mesos-java
+  mesos-protobufs
+  process
+  zookeeper
+  ${JNI_LIBRARIES})
+
+target_include_directories(
+  mesos-java PUBLIC
+  ${JNI_INCLUDE_DIRS}
+  ${CMAKE_CURRENT_BINARY_DIR}/jni
+  ${MESOS_PUBLIC_INCLUDE_DIR})