summaryrefslogtreecommitdiffstats
path: root/Modules/UseJavaClassFilelist.cmake
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2011-07-26 18:54:33 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2011-07-26 18:54:33 (GMT)
commit2b16232d4535cf438be879d86c013e9945dc9f52 (patch)
treec5240c6da03fd039620c4ee7b7bfa09777b2460c /Modules/UseJavaClassFilelist.cmake
parentb3dba1a145974361d8afa56ffa66aaadb4e3cb01 (diff)
parent1417a55754d97810b85deb0f51793b0c4ceee4e8 (diff)
downloadCMake-2b16232d4535cf438be879d86c013e9945dc9f52.zip
CMake-2b16232d4535cf438be879d86c013e9945dc9f52.tar.gz
CMake-2b16232d4535cf438be879d86c013e9945dc9f52.tar.bz2
Merge topic 'asn_java_support'
1417a55 Java: Fix documentation format and indentation 0b7627d Java: Use set_property/get_property for target variables. b01a505 Java: Create correct jar archive dependencies. f99c312 Java: Added some dependency magic to avoid recompilations. f3233ba Java: Create java_class_filelist only if it does't exist. a22ed3d Tests: Check for the new Java exeutable variables. c177c8e Tests: Java tests should test UseJava.cmake 5c2106c Modules: Added CMake Java support. a4b6275 FindJava: Find missing java development executables.
Diffstat (limited to 'Modules/UseJavaClassFilelist.cmake')
-rw-r--r--Modules/UseJavaClassFilelist.cmake52
1 files changed, 52 insertions, 0 deletions
diff --git a/Modules/UseJavaClassFilelist.cmake b/Modules/UseJavaClassFilelist.cmake
new file mode 100644
index 0000000..c842bf7
--- /dev/null
+++ b/Modules/UseJavaClassFilelist.cmake
@@ -0,0 +1,52 @@
+#
+# This script create a list of compiled Java class files to be added to a
+# jar file. This avoids including cmake files which get created in the
+# binary directory.
+#
+
+#=============================================================================
+# Copyright 2010-2011 Andreas schneider <asn@redhat.com>
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distribute this file outside of CMake, substitute the full
+# License text for the above reference.)
+
+if (CMAKE_JAVA_CLASS_OUTPUT_PATH)
+ if (EXISTS "${CMAKE_JAVA_CLASS_OUTPUT_PATH}")
+
+ set(_JAVA_GLOBBED_FILES)
+ if (CMAKE_JAR_CLASSES_PREFIX)
+ foreach(JAR_CLASS_PREFIX ${CMAKE_JAR_CLASSES_PREFIX})
+ message(STATUS "JAR_CLASS_PREFIX: ${JAR_CLASS_PREFIX}")
+
+ file(GLOB_RECURSE _JAVA_GLOBBED_TMP_FILES "${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${JAR_CLASS_PREFIX}/*.class")
+ if (_JAVA_GLOBBED_TMP_FILES)
+ list(APPEND _JAVA_GLOBBED_FILES ${_JAVA_GLOBBED_TMP_FILES})
+ endif (_JAVA_GLOBBED_TMP_FILES)
+ endforeach(JAR_CLASS_PREFIX ${CMAKE_JAR_CLASSES_PREFIX})
+ else()
+ file(GLOB_RECURSE _JAVA_GLOBBED_FILES "${CMAKE_JAVA_CLASS_OUTPUT_PATH}/*.class")
+ endif (CMAKE_JAR_CLASSES_PREFIX)
+
+ set(_JAVA_CLASS_FILES)
+ # file(GLOB_RECURSE foo RELATIVE) is broken so we need this.
+ foreach(_JAVA_GLOBBED_FILE ${_JAVA_GLOBBED_FILES})
+ file(RELATIVE_PATH _JAVA_CLASS_FILE ${CMAKE_JAVA_CLASS_OUTPUT_PATH} ${_JAVA_GLOBBED_FILE})
+ set(_JAVA_CLASS_FILES ${_JAVA_CLASS_FILES}${_JAVA_CLASS_FILE}\n)
+ endforeach(_JAVA_GLOBBED_FILE ${_JAVA_GLOBBED_FILES})
+
+ # write to file
+ file(WRITE ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist ${_JAVA_CLASS_FILES})
+
+ else (EXISTS "${CMAKE_JAVA_CLASS_OUTPUT_PATH}")
+ message(SEND_ERROR "FATAL: Java class output path doesn't exist")
+ endif (EXISTS "${CMAKE_JAVA_CLASS_OUTPUT_PATH}")
+else (CMAKE_JAVA_CLASS_OUTPUT_PATH)
+ message(SEND_ERROR "FATAL: Can't find CMAKE_JAVA_CLASS_OUTPUT_PATH")
+endif (CMAKE_JAVA_CLASS_OUTPUT_PATH)