This commit is contained in:
Anonymous Maarten 2023-02-13 05:00:20 +03:00 committed by GitHub
commit c1fdcfdd71
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 137 additions and 7 deletions

View file

@ -25,9 +25,9 @@ else
fi
fi
android_platformdir="$ANDROID_HOME/platforms/android-$ANDROID_API"
android_platformdir="${ANDROID_HOME}/platforms/android-${ANDROID_API}"
echo "Building for android api version $ANDROID_API"
echo "Building for android api version ${ANDROID_API}"
echo "android_platformdir=$android_platformdir"
scriptdir=$(cd -P -- "$(dirname -- "$0")" && printf '%s\n' "$(pwd -P)")
@ -56,6 +56,7 @@ build_cmake_projects() {
cmake -S "$sdl_root" -B "${build_root}/build_${android_abi}" \
-DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake" \
-DANDROID_PLATFORM=${android_platform} \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DANDROID_ABI=${android_abi} \
-DSDL_SHARED=ON \
-DSDL_STATIC=ON \
@ -80,6 +81,7 @@ build_cmake_projects() {
classes_sources_jar_path="${prefabhome}/classes-sources.jar"
classes_jar_path="${prefabhome}/classes.jar"
javadoc_jar_path="${prefabhome}/classes-javadoc.jar"
compile_java() {
classes_sources_root="${prefabhome}/classes-sources"
@ -102,17 +104,25 @@ compile_java() {
jar -cf "${classes_sources_jar_path}" "@${java_sourceslist_path}"
popd
java_sourceslist_path="${prefabhome}/java_sources.txt"
echo "Collecting java sources"
find "$sdl_root/android-project/app/src/main/java" -name "*.java" >"${java_sourceslist_path}"
classes_root="${prefabhome}/classes"
mkdir -p "${classes_root}/META-INF"
cp "$sdl_root/LICENSE.txt" "${classes_root}/META-INF"
java_sourceslist_path="${prefabhome}/java_sources.txt"
echo "Collecting sources for classes.jar"
find "$sdl_root/android-project/app/src/main/java" -name "*.java" >"${java_sourceslist_path}"
echo "Compiling classes"
javac -encoding utf-8 -classpath "$android_platformdir/android.jar" -d "${classes_root}" "@${java_sourceslist_path}"
javadoc_root="${prefabhome}/javadoc"
mkdir -p "${javadoc_root}/META-INF"
cp "$sdl_root/LICENSE.txt" "${javadoc_root}/META-INF"
echo "Compiling javadoc"
javadoc -encoding utf-8 -classpath "$android_platformdir/android.jar" -d "${javadoc_root}" "@${java_sourceslist_path}"
java_classeslist_path="${prefabhome}/java_classes.txt"
pushd "${classes_root}"
find "." -name "*.class" >"${java_classeslist_path}"
@ -120,6 +130,14 @@ compile_java() {
echo "Creating classes.jar"
jar -cf "${classes_jar_path}" "@${java_classeslist_path}"
popd
javadoc_fileslist_path="${prefabhome}/javadoc_files.txt"
pushd "${javadoc_root}"
find "." -name "*" >"${javadoc_fileslist_path}"
#find "META-INF" -name "*" >>"${java_classeslist_path}"
echo "Creating javadoc.jar"
jar -cf "${javadoc_jar_path}" "@${javadoc_fileslist_path}"
popd
}
pom_filename="SDL${sdl_major}-${sdl_version}.pom"
@ -143,10 +161,29 @@ create_pom_xml() {
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<name>Sam Lantinga</name>
<email>slouken@libsdl.org</email>
<organization>SDL</organization>
<organizationUrl>https://www.libsdl.org</organizationUrl>
</developer>
</developers>
<scm>
<connection>scm:git:https://github.com/libsdl-org/SDL</connection>
<developerConnection>scm:git:ssh://github.com:libsdl-org/SDL.git</developerConnection>
<url>https://github.com/libsdl-org/SDL</url>
</scm>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
</project>
EOF
}
@ -298,7 +335,8 @@ pushd "${aar_root}"
aar_filename="SDL${sdl_major}-${sdl_version}.aar"
cp "${classes_jar_path}" ./classes.jar
cp "${classes_sources_jar_path}" ./classes-sources.jar
zip -r "${aar_filename}" AndroidManifest.xml classes.jar classes-sources.jar prefab META-INF
cp "${javadoc_jar_path}" ./classes-javadoc.jar
zip -r "${aar_filename}" AndroidManifest.xml classes.jar classes-sources.jar classes-javadoc.jar prefab META-INF
zip -Tv "${aar_filename}" 2>/dev/null ;
mv "${aar_filename}" "${prefabhome}"
popd

View file

@ -0,0 +1,92 @@
# MIT License
#
# Simple DirectMedia Layer
# Copyright (C) 2022-2022 Sam Lantinga <slouken@libsdl.org>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
FROM ubuntu:22.04
WORKDIR /
SHELL ["/bin/bash", "-c"]
ARG DEBIAN_FRONTEND=noninteractive
RUN : \
&& apt-get update -qq \
&& apt-get install -qq -y openjdk-11-jdk vim git unzip libglu1 libpulse-dev libasound2 libc6 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxi6 libxtst6 libnss3 wget \
&& apt-get install -qq -y cmake make ninja-build sudo zip \
&& apt-get clean \
&& :
ARG GRADLE_VERSION=7.5.1
# Download gradle, install gradle and gradlew
RUN : \
&& wget -q https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip -P /tmp \
&& unzip -q -d /opt/gradle /tmp/gradle-${GRADLE_VERSION}-bin.zip \
&& rm /tmp/gradle-${GRADLE_VERSION}-bin.zip \
&& mkdir /opt/gradlew \
&& touch /opt/gradlew/settings.gradle \
&& /opt/gradle/gradle-${GRADLE_VERSION}/bin/gradle wrapper --gradle-version ${GRADLE_VERSION} --distribution-type all -p /opt/gradlew \
&& /opt/gradle/gradle-${GRADLE_VERSION}/bin/gradle wrapper -p /opt/gradlew \
&& :
# https://developer.android.com/studio/
ARG ANNDROID_CMD_LINE_TOOLS=linux-9123335_latest
RUN mkdir /opt/android
RUN mkdir /opt/android/cmdline-tools
RUN : \
&& wget -q https://dl.google.com/android/repository/commandlinetools-${ANNDROID_CMD_LINE_TOOLS}.zip -P /tmp \
&& unzip -q -d /opt/android/cmdline-tools /tmp/commandlinetools-${ANNDROID_CMD_LINE_TOOLS}.zip \
&& rm \tmp/commandlinetools-${ANNDROID_CMD_LINE_TOOLS}.zip \
&& :
ARG ANDROID_API_LEVEL=33
# https://developer.android.com/studio/releases/build-tools
ARG ANDROID_BUILD_TOOLS_LEVEL=33.0.1
# https://developer.android.com/ndk/downloads
ARG ANDROID_NDK_VERSION=21.4.7075529
# install packages and accept all licenses
# cmdline-tools/cmdline-tools - the second "cmdline-tools" is the folder in the zip file
RUN : \
&& yes Y | /opt/android/cmdline-tools/cmdline-tools/bin/sdkmanager --install "build-tools;${ANDROID_BUILD_TOOLS_LEVEL}" "platforms;android-${ANDROID_API_LEVEL}" "platform-tools" "ndk;${ANDROID_NDK_VERSION}" \
&& yes Y | /opt/android/cmdline-tools/cmdline-tools/bin/sdkmanager --licenses \
&& :
# Environment variables to be used for build
ENV GRADLE_HOME=/opt/gradle/gradle-${GRADLE_VERSION}
ENV ANDROID_HOME=/opt/android
ENV ANDROID_NDK_HOME=${ANDROID_HOME}/ndk/${ANDROID_NDK_VERSION}
ENV PATH "$PATH:$GRADLE_HOME/bin:/opt/gradlew:${ANDROID_HOME}/emulator:${ANDROID_HOME}/cmdline-tools/tools/bin:${ANDROID_HOME}/platform-tools:${ANDROID_NDK_HOME}"
ENV LD_LIBRARY_PATH "${ANDROID_HOME}/emulator/lib64:${ANDROID_HOME}/emulator/lib64/qt/lib"
ARG USERID=1000
RUN : \
&& useradd -u ${USERID} -r -m user \
&& yes password | passwd user \
&& echo "user ALL=(ALL) NOPASSWD:ALL" >/etc/sudoers.d/user \
&& usermod -s /bin/bash user \
&& :
USER ${USERID}