Skip to content

Commit

Permalink
adds macos and mingw release tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Jerboa-app committed Jan 16, 2024
1 parent aeb47ac commit 66616a9
Show file tree
Hide file tree
Showing 20 changed files with 1,204 additions and 9 deletions.
95 changes: 93 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,27 @@ jobs:
ls headers
- name: pack headers mingw
run: |
ls
mkdir headers-mingw
cp -r headers/* headers-mingw
mkdir headers-mingw/VulkanSDK
cp -r include/jGL/include/vendored/VulkanSDK/Include headers-mingw/VulkanSDK/
cp -r include/jGL/include/vendored/VulkanSDK/Windows headers-mingw/VulkanSDK/
ls headers-mingw
- name: build header artifact
uses: actions/upload-artifact@v3
with:
name: headers
path: headers


- name: build header-mingw artifact
uses: actions/upload-artifact@v3
with:
name: headers-mingw
path: headers-mingw

linuxNative:
runs-on: ubuntu-20.04
Expand Down Expand Up @@ -121,6 +136,7 @@ jobs:
./build.sh -w -d -r -t
mkdir windowsbuild
cp build/libHop.a windowsbuild/
cp build/*.dll windowsbuild/
cd windowsbuild && zip -r ../windowsbuild.zip * && cd ..
mkdir demos
cp -r build/PerlinWorld demos/
Expand Down Expand Up @@ -344,7 +360,82 @@ jobs:
ls
mkdir build && cd build
cmake .. && make
test-release-mingw:
needs: [linuxXwindows, headers]
runs-on: ubuntu-22.04

steps:

- uses: actions/checkout@v3
with:
submodules: 'true'

- name: get headers
uses: actions/download-artifact@v3
with:
name: headers-mingw
path: headers/

- name: get windows build
uses: actions/download-artifact@v3
with:
name: windowsbuild

- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y xorg-dev build-essential mesa-common-dev libx11-dev libxrandr-dev libgl1-mesa-dev libglu1-mesa-dev libfreetype6-dev libopenal-dev libsndfile1-dev libudev-dev g++-mingw-w64-x86-64-posix gcc-mingw-w64-x86-64-posix libz-mingw-w64-dev libxinerama-dev libxcursor-dev vulkan-tools libvulkan-dev vulkan-validationlayers-dev spirv-tools xvfb x11-apps imagemagick

- name: mingw lib test
run: |
ls
mkdir tests/regression/user-mingw/include/
cp *.a tests/regression/user-mingw/
cp -r headers/* tests/regression/user-mingw/include/
cd tests/regression/user-mingw
./build.sh
test-release-macos:
needs: [macosNative, headers]
runs-on: macos-11

steps:

- uses: actions/checkout@v3
with:
submodules: 'true'

- name: get headers
uses: actions/download-artifact@v3
with:
name: headers
path: headers/

- name: get macos build
uses: actions/download-artifact@v3
with:
name: macos

- name: Install dependencies
run: |
wget https://vulkan.lunarg.com/sdk/download/1.2.189.0/mac/vulkansdk-macos-1.2.189.0.dmg
hdiutil attach vulkansdk-macos-1.2.189.0.dmg
mkdir ~/vulkan
cd /Volumes/vulkansdk-macos-1.2.189.0/
sudo ./InstallVulkan.app/Contents/macOS/InstallVulkan --root ~/vulkan --accept-licenses --default-answer --confirm-command install
ls ~/vulkan
cd ~/vulkan/
python install_vulkan.py
- name: macos lib test
run: |
ls
mkdir tests/regression/user-macos/include/
cp *.a tests/regression/user-macos/
cp -r headers/* tests/regression/user-macos/include/
cd tests/regression/user-macos
mkdir build && cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=../osx.cmake && make
release:
needs: [linuxNative, linuxXwindows, linuxXandroid, macosNative, headers]
if: github.ref_type == 'tag'
Expand Down
12 changes: 9 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ include/vendored/ogg/include/ogg/config_types.h
perf.*
**.gradle
**.idea
test/regression/user/build
test/regression/user/include/*
test/regression/user/*.a
tests/regression/user/build
tests/regression/user/include/
tests/regression/user/*.a
tests/regression/user-mingw/build
tests/regression/user-mingw/include/*
tests/regression/user-mingw/*.a
tests/regression/user-macos/build
tests/regression/user-macos/include/*
tests/regression/user-macos/*.a
6 changes: 4 additions & 2 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ SYNTAX=0
SANITISE=0
DEMO=0
ANDROID_NDK=""
VK_SDK="include/vendored/VulkanSDK"
VK_SDK="$(pwd)/include/jGL/include/vendored/VulkanSDK"
BENCHMARK=0
STANDALONE=0
CLEAN=1
Expand Down Expand Up @@ -156,7 +156,9 @@ then
export VULKAN_SDK=$VK_SDK/Windows
export VULKAN_LIBRARY="$VK_SDK/Windows/Lib"
export VULKAN_INCLUDE_DIR="$VK_SDK/Windows/Include"

ln -s "$VK_SDK/Windows/Lib" "$VK_SDK/Windows/lib"
ln -s "$VK_SDK/Include" "$VK_SDK/Windows/Include"
ln -s "$VK_SDK/Windows/Include" "$VK_SDK/Windows/include"
cd build
cmake .. -D WINDOWS=ON -D STANDALONE=$STANDALONE -D BUILD_DEMOS=$DEMO -D RELEASE=$RELEASE -D BENCHMARK=$BENCHMARK -D TEST_SUITE=$TEST -D SYNTAX_ONLY=$SYNTAX -D SANITISE=$SANITISE -D CMAKE_TOOLCHAIN_FILE=./windows.cmake && make -j 4
STATUS=$?
Expand Down
45 changes: 45 additions & 0 deletions tests/regression/user-macos/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
cmake_minimum_required(VERSION 3.22)
project(macos-lib-test)

set(OUTPUT_NAME user)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-trapping-math -fno-rounding-math -fno-signaling-nans -fno-signed-zeros")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -O3 -Wall")

set(SRC
"main.cpp"
)

include_directories(include)
include_directories(.)

find_package(ZLIB REQUIRED)
find_package(PNG REQUIRED)
find_package(Vulkan REQUIRED)
find_package(OpenGL REQUIRED)
find_package(X11 REQUIRED)

add_executable(${OUTPUT_NAME} ${SRC})

target_link_libraries(
${OUTPUT_NAME}
${CMAKE_SOURCE_DIR}/libjGL.a
${X11_LIBRARIES}
${OPENGL_LIBRARIES}
${Vulkan_LIBRARIES}
${ZLIB_LIBRARIES}
${PNG_LIBRARIES}
${CMAKE_SOURCE_DIR}/libHop.a
)
target_include_directories(
${OUTPUT_NAME}
PUBLIC
${Vulkan_INCLUDE_DIR}
)

# https://stackoverflow.com/questions/18391487/compiling-with-glfw3-linker-errors-undefined-reference
target_link_libraries(${OUTPUT_NAME} "-framework Cocoa -framework IOKit -framework CoreVideo")

target_compile_definitions(${OUTPUT_NAME} PUBLIC GLSL_VERSION="330")
131 changes: 131 additions & 0 deletions tests/regression/user-macos/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
#include "main.h"

int main(int argv, char ** argc)
{

jGL::DesktopDisplay::Config conf;

conf.VULKAN = false;
conf.COCOA_RETINA = false;

jGL::DesktopDisplay display(glm::ivec2(resX, resY), "Shape", conf);

glewInit();

jGLInstance = std::move(std::make_unique<jGL::GL::OpenGLInstance>(display.getRes()));

jGL::OrthoCam camera(resX, resY, glm::vec2(0.0,0.0));

camera.setPosition(0.0f, 0.0f);

jLog::Log log;

high_resolution_clock::time_point tic, tock;
double rdt = 0.0;

jGLInstance->setTextProjection(glm::ortho(0.0,double(resX),0.0,double(resY)));
jGLInstance->setMSAA(1);

std::shared_ptr<jGL::ShapeRenderer> circles = jGLInstance->createShapeRenderer
(
32
);

std::vector<std::shared_ptr<jGL::Shape>> shapes;

RNG rng;

for (unsigned i = 0; i < 64; i++)
{
shapes.push_back
(
std::make_shared<jGL::Shape>
(
jGL::Transform(rng.nextFloat(), rng.nextFloat(), 0.0, 0.1f),
glm::vec4(rng.nextFloat(), rng.nextFloat(), rng.nextFloat(), 1.0)
)
);

circles->add(shapes[i], std::to_string(i));
}

circles->setProjection(camera.getVP());

std::shared_ptr<jGL::Shader> shader = std::make_shared<jGL::GL::glShader>(vertexShader, fragmentShader);

shader->use();

double delta = 0.0;
double dt = 1.0/600.0;

while (display.isOpen())
{
tic = high_resolution_clock::now();

jGLInstance->beginFrame();

jGLInstance->clear();

for (unsigned i = 0; i <shapes.size(); i++)
{
auto tr = circles->getTransform(std::to_string(i));
circles->getShape(std::to_string(i))->update
(
jGL::Transform(tr.x+dt*(rng.nextFloat()-0.5), tr.y+dt*(rng.nextFloat()-0.5), tr.theta, tr.scale)
);
}

circles->draw(shader);

delta = 0.0;
for (int n = 0; n < 60; n++)
{
delta += deltas[n];
}
delta /= 60.0;

std::stringstream debugText;

double mouseX, mouseY;
display.mousePosition(mouseX,mouseY);

debugText << "Delta: " << fixedLengthNumber(delta,6)
<< " ( FPS: " << fixedLengthNumber(1.0/delta,4)
<< ")\n"
<< "Render draw time: \n"
<< " " << fixedLengthNumber(rdt, 6) << "\n"
<< "Mouse (" << fixedLengthNumber(mouseX,4)
<< ","
<< fixedLengthNumber(mouseY,4)
<< ")\n";

jGLInstance->text(
debugText.str(),
glm::vec2(64.0f, resY-64.0f),
0.5f,
glm::vec4(0.0f,0.0f,0.0f,1.0f)
);

if (frameId == 30)
{
if (log.size() > 0)
{
std::cout << log << "\n";
}
}

jGLInstance->endFrame();

display.loop();

tock = high_resolution_clock::now();

deltas[frameId] = duration_cast<duration<double>>(tock-tic).count();
frameId = (frameId+1) % 60;

}

jGLInstance->finish();

return 0;
}
Loading

0 comments on commit 66616a9

Please sign in to comment.