diff --git a/cmake/java.cmake b/cmake/java.cmake index 7b385e7b35..1c7d755051 100644 --- a/cmake/java.cmake +++ b/cmake/java.cmake @@ -9,6 +9,14 @@ endif() find_package(SWIG REQUIRED) include(UseSWIG) +if(${SWIG_VERSION} VERSION_GREATER_EQUAL 4) + list(APPEND CMAKE_SWIG_FLAGS "-doxygen") +endif() + +if(UNIX AND NOT APPLE) + list(APPEND CMAKE_SWIG_FLAGS "-DSWIGWORDSIZE64") +endif() + # Generate Protobuf java sources set(PROTO_JAVAS) file(GLOB_RECURSE proto_java_files RELATIVE ${PROJECT_SOURCE_DIR} @@ -28,7 +36,7 @@ foreach(PROTO_FILE ${proto_java_files}) OUTPUT ${PROTO_JAVA} COMMAND protobuf::protoc "--proto_path=${PROJECT_SOURCE_DIR}" - "--java_out=${PROJECT_BINARY_DIR}/java" + "--java_out=${PROJECT_BINARY_DIR}/java/com/google/" ${PROTO_FILE} DEPENDS ${PROTO_FILE} protobuf::protoc COMMENT "Running C++ protocol buffer compiler on ${PROTO_FILE}" @@ -46,9 +54,9 @@ find_package(JNI REQUIRED) set(FLAGS -DUSE_BOP -DUSE_GLOP -DABSL_MUST_USE_RESULT) if(USE_COINOR) list(APPEND FLAGS - "-DUSE_CBC" - "-DUSE_CLP" - ) + "-DUSE_CBC" + "-DUSE_CLP" + ) endif() list(APPEND CMAKE_SWIG_FLAGS ${FLAGS} "-I${PROJECT_SOURCE_DIR}") @@ -56,11 +64,22 @@ foreach(SUBPROJECT constraint_solver linear_solver sat graph algorithms data) #add_subdirectory(ortools/${SUBPROJECT}/java) endforeach() +file(GENERATE + OUTPUT java/pom.xml + INPUT ortools/java/pom.xml.in) + + # Main Target add_custom_target(java_package ALL - DEPENDS pom.xml - COMMAND ${CMAKE_COMMAND} -E remove_directory dist + DEPENDS + ortools::ortools + Java${PROJECT_NAME}_proto + java/pom.xml + COMMAND ${CMAKE_COMMAND} -E remove_directory com COMMAND ${Java_JAVAC_EXECUTABLE} pom.xml + BYPRODUCTS + java + WORKING_DIRECTORY java ) # Test diff --git a/ortools/java/pom.xml.in b/ortools/java/pom.xml.in new file mode 100644 index 0000000000..a5d72496b0 --- /dev/null +++ b/ortools/java/pom.xml.in @@ -0,0 +1,22 @@ + +4.0.0 +com.google.ortools +ortools-java +${PROJECT_VERSION} + + + com.google.protobuf + protobuf-java + 3.11.2 + + + + ${project.basedir} + ${project.build.directory}/lib + ${project.basedir}/ortools + + +