1 /* 2 * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 import java.nio.file.Path; 25 import java.nio.file.Paths; 26 import java.util.spi.ToolProvider; 27 28 public class JtregJextractPython { 29 private static final ToolProvider JEXTRACT = ToolProvider.findFirst("jextract") 30 .orElseThrow(() -> 31 new RuntimeException("jextract tool not found") 32 ); 33 34 private static final Path outputDir = Paths.get(System.getProperty("test.classes", ".")); 35 36 public static int main(String[] args) { 37 int result = JEXTRACT.run(System.out, System.err, 38 "-torg.python", "-lpython2.7", 39 "-rpath=/System/Library/Frameworks/Python.framework/Versions/2.7/lib/", 40 "--exclude-symbols=Py_FindMethod|_Py.*|PyBuffer_SizeFromFormat", // missing symbols 41 "--exclude-symbols=Py.*_FromFormatV|PyOS_vsnprintf|Py.*VaParse.*|Py_VaBuild.*", // __va_list_tag 42 "-d=" + outputDir.toAbsolutePath(), 43 "/usr/include/stdio.h", "/usr/include/_stdio.h", "/usr/include/stdlib.h", "/usr/include/sys/signal.h", 44 "/usr/include/python2.7/Python.h"); 45 46 if (result != 0) { 47 throw new RuntimeException(JEXTRACT.name() + " returns non-zero value"); 48 } 49 return result; 50 } 51 }