Skip to content

Latest commit

 

History

History
151 lines (119 loc) · 3.59 KB

File metadata and controls

151 lines (119 loc) · 3.59 KB

TODO: implement sample java class to compile and build using javac

*.class
CompileFlags:
  Add:
    - "-Wno-undefined-inline"
    - "-I/usr/lib/jvm/default-java/include/linux"
    - "-I/usr/lib/jvm/default-java/include"
    - "-I/usr/include/gtk-4.0"
    - "-I.deps/rexo/include"
    - "-Iexamples/java/include"
    - "-Iexamples/java/src"
    - "-Isrc"
  Compiler: clang
include_directories(${JAVA_HOME}/include/linux)
include_directories(${JAVA_HOME}/include)
include_directories(/usr/include/gtk-4.0)
include_directories(${CMAKE_SOURCE_DIR}/.deps/rexo/include)
include_directories(${CMAKE_SOURCE_DIR}/examples/java/include)
include_directories(${CMAKE_SOURCE_DIR}/examples/java/src)
include_directories(${CMAKE_SOURCE_DIR}/src)
include_directories(${CMAKE_SOURCE_DIR}/tests)
-I/usr/lib/jvm/default-java/include/linux
-I/usr/lib/jvm/default-java/include
-I/usr/include/gtk-4.0
-I.deps/rexo/include
-Iexamples/java/include
-Iexamples/java/src
-Isrc
-DCONFIG_MEMORY_CLEANUP
-DCONFIG_MEMORY_DEBUG_INFO
-DCONFIG_GC
#!/usr/bin/env bash
if [[ "${BASHOPTS}" != *extdebug* ]]; then
    set -e
fi

err_report() {
    cd "${source}"
    echo "ERROR: $0:$*"
    exit 8
}

if [[ "${BASHOPTS}" != *extdebug* ]]; then
    trap 'err_report $LINENO' ERR
fi

source=$(pwd)

pwd=$(cd "$(dirname $(dirname "${BASH_SOURCE[0]}"))" &> /dev/null && pwd)

cd "${pwd}"

install="$1"

opts=( "${@:2}" )

. "${pwd}/bin/scripts/load.sh"


## Builds java sources
## Usage: ${script} <option> [optional]
## ${commands}

while (($#)); do
    case "$1" in

        "--help") # [optional] shows command description
            help
            ;;

        "--java") # [optional] extracts javac library info

            echo "Compiling Java files, generating JNI headers, and building shared libraries..."
            cd "${pwd}/examples/java"

            # Compile all Java files
            javac -cp . *.java

            # Create the include and lib directories if they don't exist
            mkdir -p include
            mkdir -p lib

            # Generate JNI header files for each class
            javac -h include -cp . *.java

            export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
            # Compile libc-sys.so
            # echo "Compiling libc-sys.so..."
            gcc -c -fPIC \
                ${pwd}/examples/java/src/c-sys.c \
                -I${JAVA_HOME}/include/linux \
                -I${JAVA_HOME}/include/ \
                -I${pwd}/src \
                -o ${pwd}/examples/java/lib/libc-sys.o
            gcc -shared \
                ${pwd}/examples/java/lib/libc-sys.o \
                -Wl,-rpath,L${pwd}/lib \
                -L${pwd}/lib \
                -o ${pwd}/examples/java/lib/libc-sys.so

            # Compile libc-vm.so
            # echo "Compiling libc-vm.so..."
            gcc -c -fPIC \
                ${pwd}/examples/java/src/c-vm.c \
                -I${JAVA_HOME}/include/linux \
                -I${JAVA_HOME}/include/ \
                -I${pwd}/src \
                -o ${pwd}/examples/java/lib/libc-vm.o
            gcc -shared \
                ${pwd}/examples/java/lib/libc-sys.o ${pwd}/examples/java/lib/libc-vm.o \
                -Wl,-rpath,L${pwd}/lib \
                -L${pwd}/lib \
                -lc-sys \
                -o ${pwd}/examples/java/lib/libc-vm.so

            echo "JNI header files generated in the 'include' directory."
            ;;

        *)
            help
            ;;

    esac
    shift
done

if [[ "${install}" == "" ]]; then
    help
    exit
fi


[[ $SHLVL -eq 2 ]] && echo OK

cd "${pwd}"