mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-15 15:20:04 +08:00
51 lines
1.9 KiB
Python
51 lines
1.9 KiB
Python
import os
|
|
import argparse
|
|
import re
|
|
import platform
|
|
|
|
# NOTE: In JDK 8 and earlier, `javac` does not create the directories specified in the -d option if they do not already exist
|
|
# So we need to create them manually
|
|
def makedirs(dir):
|
|
if not os.path.exists(dir):
|
|
os.makedirs(dir)
|
|
return
|
|
|
|
# return all files with extension `ext` in directory `dir` as string
|
|
def getFilesInDir(dir, ext):
|
|
files = '';
|
|
for file in os.listdir(dir):
|
|
if file.endswith(ext):
|
|
# for non-windows systems '$'-symbol in file names should be escaped
|
|
if platform.system().lower() != 'windows':
|
|
file = re.sub(r'\$', r'\\$', file)
|
|
files += ' ' + dir + '/' + file
|
|
|
|
return files
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(description='Build Java wrapper for docbuilder library')
|
|
parser.add_argument('-H', '--headers', action='store_true', help='Generate C++ JNI header files')
|
|
parser.add_argument('-n', '--no-jar', dest='no_jar', action='store_true', help='Build only classes without JAR archive')
|
|
args = parser.parse_args()
|
|
|
|
file_dir = os.path.dirname(os.path.realpath(__file__));
|
|
os.chdir(file_dir + '/src/java')
|
|
|
|
java_files = getFilesInDir('docbuilder', '.java')
|
|
java_files += getFilesInDir('docbuilder/utils', '.java')
|
|
|
|
# BUILD
|
|
classes_dir = file_dir + '/build/classes'
|
|
makedirs(classes_dir + '/docbuilder/utils')
|
|
headers_dir = file_dir + '/src/jni'
|
|
# build all Java classes
|
|
os.system('javac -d ' + classes_dir + (' -h ' + headers_dir if args.headers else '') + java_files)
|
|
|
|
# PACKING TO JAR
|
|
if not args.no_jar:
|
|
os.chdir(classes_dir)
|
|
class_files = getFilesInDir('docbuilder', '.class')
|
|
class_files += getFilesInDir('docbuilder/utils', '.class')
|
|
makedirs('../libs')
|
|
os.system('jar -cvf ../libs/docbuilder.jar ' + class_files)
|