From a9c7118ac5a16b54bfb14fcc0c540daecc17eb69 Mon Sep 17 00:00:00 2001 From: austin Date: Tue, 3 Dec 2024 12:38:40 -0500 Subject: [PATCH] moving native code around --- .gitmodules | 2 +- .vscode/settings.json | 3 +- CMakeLists.txt | 16 +-- buildNumber.properties | 4 +- docs/src/progress/renderertodo.md | 3 + pom.xml | 2 +- src/fluid/compile.sh | 101 ------------------ src/main/c/build.sh | 24 ++++- src/{fluid => main/c}/includes/chunk.h | 0 src/{fluid => main/c}/includes/chunkmask.h | 0 src/{fluid => main/c}/includes/environment.h | 2 + .../c}/includes/mainFunctions.h | 0 src/{fluid => main/c}/includes/mem/pool.h | 0 src/{fluid => main/c}/includes/metadatacalc.h | 0 ...sphere_client_fluid_cache_FluidChunkData.h | 0 ...re_server_fluid_manager_ServerFluidChunk.h | 0 ...luid_simulator_FluidAcceleratedSimulator.h | 0 src/{fluid => main/c}/includes/simulation.h | 0 .../c}/includes/solver_consts.h | 0 src/{fluid => main/c}/includes/utilities.h | 0 src/{fluid => main/c}/lib/stb | 0 src/{fluid => main/c}/src/chunkmask.c | 0 src/{fluid => main/c}/src/densitystep.c | 0 src/{fluid => main/c}/src/fluidsim.c | 2 +- src/{fluid => main/c}/src/javainterface.c | 0 src/{fluid => main/c}/src/mem/fluidmem.c | 4 +- src/{fluid => main/c}/src/mem/pool.c | 0 .../c}/src/metadata/metadatacalc.c | 0 src/{fluid => main/c}/src/velocitystep.c | 0 29 files changed, 47 insertions(+), 116 deletions(-) delete mode 100644 src/fluid/compile.sh rename src/{fluid => main/c}/includes/chunk.h (100%) rename src/{fluid => main/c}/includes/chunkmask.h (100%) rename src/{fluid => main/c}/includes/environment.h (98%) rename src/{fluid => main/c}/includes/mainFunctions.h (100%) rename src/{fluid => main/c}/includes/mem/pool.h (100%) rename src/{fluid => main/c}/includes/metadatacalc.h (100%) rename src/main/c/includes/{ => native}/electrosphere_client_fluid_cache_FluidChunkData.h (100%) rename src/main/c/includes/{ => native}/electrosphere_server_fluid_manager_ServerFluidChunk.h (100%) rename src/main/c/includes/{ => native}/electrosphere_server_fluid_simulator_FluidAcceleratedSimulator.h (100%) rename src/{fluid => main/c}/includes/simulation.h (100%) rename src/{fluid => main/c}/includes/solver_consts.h (100%) rename src/{fluid => main/c}/includes/utilities.h (100%) rename src/{fluid => main/c}/lib/stb (100%) rename src/{fluid => main/c}/src/chunkmask.c (100%) rename src/{fluid => main/c}/src/densitystep.c (100%) rename src/{fluid => main/c}/src/fluidsim.c (99%) rename src/{fluid => main/c}/src/javainterface.c (100%) rename src/{fluid => main/c}/src/mem/fluidmem.c (98%) rename src/{fluid => main/c}/src/mem/pool.c (100%) rename src/{fluid => main/c}/src/metadata/metadatacalc.c (100%) rename src/{fluid => main/c}/src/velocitystep.c (100%) diff --git a/.gitmodules b/.gitmodules index 9ae1a725..d9680861 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "src/fluid/lib/stb"] - path = src/fluid/lib/stb + path = src/main/c/lib/stb url = https://github.com/nothings/stb.git diff --git a/.vscode/settings.json b/.vscode/settings.json index a1bc6241..3edf9757 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -21,6 +21,7 @@ "electrosphere_server_fluid_manager_serverfluidchunk.h": "c", "stdio.h": "c", "cstdlib": "c", - "pool.h": "c" + "pool.h": "c", + "mainfunctions.h": "c" } } \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 7fb7f45e..a0ba8c43 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,10 +2,10 @@ cmake_minimum_required(VERSION 3.20.0) project(StormEngine VERSION 0.1.0 LANGUAGES C) # Find sources -file(GLOB_RECURSE SOURCES src/fluid/src/**.c) +file(GLOB_RECURSE SOURCES src/main/c/src/**.c) # include header files -include_directories(src/fluid/includes) +include_directories(src/main/c/includes) # include jni set(JAVA_AWT_LIBRARY NotNeeded) @@ -22,17 +22,16 @@ add_library(StormEngine SHARED ${SOURCES}) # set props for the lib target_compile_options(StormEngine PRIVATE -m64 -mavx -mavx2) + +# set shared library output dir set_target_properties(StormEngine PROPERTIES - CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/shared-folder + CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/shared-folder ) # include and enable testing include(CTest) enable_testing() -# emit test driver to outdir -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/out/build) - # Grab test files file(GLOB_RECURSE TEST_FILES ${CMAKE_SOURCE_DIR}/test/c/**.c) set(TEST_DRIVER test_driver.c) @@ -51,6 +50,11 @@ create_test_sourcelist(TEST_SOURCE_LIST ${TEST_DRIVER} ${TEST_SOURCES}) # Create test executable add_executable(test_runner ${TEST_SOURCE_LIST}) +# emit test driver to outdir +set_target_properties(test_runner PROPERTIES + CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/out/build +) + # link the library to the test executable target_link_libraries(test_runner StormEngine) diff --git a/buildNumber.properties b/buildNumber.properties index 0b81a4b6..44a8dae2 100644 --- a/buildNumber.properties +++ b/buildNumber.properties @@ -1,3 +1,3 @@ #maven.buildNumber.plugin properties file -#Tue Dec 03 11:43:16 EST 2024 -buildNumber=513 +#Tue Dec 03 12:29:34 EST 2024 +buildNumber=516 diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 189adb0f..8e4bf416 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1224,6 +1224,9 @@ Integrate CMake + Ninja Add testing to native code side Add native testing step to jenkins pipeline +(12/03/2024) +Native code building correctly in jenkins pipeline + # TODO diff --git a/pom.xml b/pom.xml index fbcf8a53..dde890f4 100644 --- a/pom.xml +++ b/pom.xml @@ -520,7 +520,7 @@ -h - src/main/c/includes + src/main/c/includes/native diff --git a/src/fluid/compile.sh b/src/fluid/compile.sh deleted file mode 100644 index f6b906c9..00000000 --- a/src/fluid/compile.sh +++ /dev/null @@ -1,101 +0,0 @@ -cd ./src/fluid - -echo "[Fluid Lib] SAVE STEPS $SAVE_STEPS" - -LIB_ENDING=".so" -BASE_INCLUDE_DIR="" -OS_INCLUDE_DIR="" - -#determine os -if [[ "$OSTYPE" == "linux-gnu"* ]]; then - #linux - LIB_ENDING=".so" - BASE_INCLUDE_DIR="${JAVA_HOME}/include" - OS_INCLUDE_DIR="${JAVA_HOME}/include/linux" -elif [[ "$OSTYPE" == "darwin"* ]]; then - # Mac OSX - LIB_ENDING=".so" -elif [[ "$OSTYPE" == "cygwin" ]]; then - # POSIX compatibility layer and Linux environment emulation for Windows - LIB_ENDING=".dll" -elif [[ "$OSTYPE" == "msys" ]]; then - # Lightweight shell and GNU utilities compiled for Windows (part of MinGW) - LIB_ENDING=".dll" - BASE_INCLUDE_DIR="${JAVA_HOME}/include" - OS_INCLUDE_DIR="${JAVA_HOME}/include/win32" -elif [[ "$OSTYPE" == "win32" ]]; then - # I'm not sure this can happen. - LIB_ENDING=".dll" -elif [[ "$OSTYPE" == "freebsd"* ]]; then - # ... - LIB_ENDING=".so" -else - # Unknown. - LIB_ENDING=".so" -fi - -# echo $PWD - -#clean compile dir -rm -f ./*.o -rm -f ./*.so -rm -f ./*.dll - - -#compile object files -# COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -msse -msse2 -msse3 -mmmx -m3dnow" -# INPUT_FILES="./src/densitystep.c" -# OUTPUT_FILE="./densitystep.o" -# gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE - -# COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -msse -msse2 -msse3 -mmmx -m3dnow" -# INPUT_FILES="./src/velocitystep.c" -# OUTPUT_FILE="./velocitystep.o" -# gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE - -# COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -msse -msse2 -msse3 -mmmx -m3dnow" -# INPUT_FILES="./src/chunkmask.c" -# OUTPUT_FILE="./chunkmask.o" -# gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE - -COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -DSAVE_STEPS=$SAVE_STEPS" -INPUT_FILES="./src/javainterface.c" -OUTPUT_FILE="./javainterface.o" -gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE - -COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -DSAVE_STEPS=$SAVE_STEPS" -INPUT_FILES="./src/fluidsim.c" -OUTPUT_FILE="./fluidsim.o" -gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE - -COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -DSAVE_STEPS=$SAVE_STEPS" -INPUT_FILES="./src/metadata/metadatacalc.c" -OUTPUT_FILE="./metadatacalc.o" -gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE - -COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -DSAVE_STEPS=$SAVE_STEPS" -INPUT_FILES="./src/mem/fluidmem.c" -OUTPUT_FILE="./fluidmem.o" -gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE - -COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -DSAVE_STEPS=$SAVE_STEPS" -INPUT_FILES="./src/mem/pool.c" -OUTPUT_FILE="./pool.o" -gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE - - - -#compile shared object file -OUTPUT_FILE="libfluidsim$LIB_ENDING" -COMPILE_FLAGS="-shared" -INPUT_FILES="fluidsim.o javainterface.o metadatacalc.o fluidmem.o pool.o" -gcc $COMPILE_FLAGS $INPUT_FILES -o $OUTPUT_FILE - -#move to resources -mkdir -p ../../shared-folder -mv "./libfluidsim$LIB_ENDING" "../../shared-folder/" - -#clean compile dir -rm -f ./*.o -rm -f ./*.so -rm -f ./*.dll \ No newline at end of file diff --git a/src/main/c/build.sh b/src/main/c/build.sh index c782d85e..2f7bb6dc 100644 --- a/src/main/c/build.sh +++ b/src/main/c/build.sh @@ -1,3 +1,25 @@ + +# determine environment variables +LIB_ENDING=".so" +if [[ "$OSTYPE" == "linux-gnu"* ]]; then + #linux + LIB_ENDING=".so" +elif [[ "$OSTYPE" == "cygwin" ]]; then + # POSIX compatibility layer and Linux environment emulation for Windows + LIB_ENDING=".dll" +elif [[ "$OSTYPE" == "msys" ]]; then + # Lightweight shell and GNU utilities compiled for Windows (part of MinGW) + LIB_ENDING=".dll" +elif [[ "$OSTYPE" == "win32" ]]; then + # I'm not sure this can happen. + LIB_ENDING=".dll" +fi + + # Builds the native code cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE= -D CMAKE_INSTALL_PREFIX=${PWD}/out/install -S ${PWD} -B ${PWD}/out/build -G Ninja -cmake --build ${PWD}/out/build \ No newline at end of file +cmake --build ${PWD}/out/build + +#copy to expected folder +mkdir ${PWD}/shared-folder +cp ${PWD}/out/build/libStormEngine${LIB_ENDING} ${PWD}/shared-folder/ diff --git a/src/fluid/includes/chunk.h b/src/main/c/includes/chunk.h similarity index 100% rename from src/fluid/includes/chunk.h rename to src/main/c/includes/chunk.h diff --git a/src/fluid/includes/chunkmask.h b/src/main/c/includes/chunkmask.h similarity index 100% rename from src/fluid/includes/chunkmask.h rename to src/main/c/includes/chunkmask.h diff --git a/src/fluid/includes/environment.h b/src/main/c/includes/environment.h similarity index 98% rename from src/fluid/includes/environment.h rename to src/main/c/includes/environment.h index b65caa10..cd57bc41 100644 --- a/src/fluid/includes/environment.h +++ b/src/main/c/includes/environment.h @@ -1,3 +1,5 @@ +#include + #ifndef ENVIRONMENT_H #define ENVIRONMENT_H diff --git a/src/fluid/includes/mainFunctions.h b/src/main/c/includes/mainFunctions.h similarity index 100% rename from src/fluid/includes/mainFunctions.h rename to src/main/c/includes/mainFunctions.h diff --git a/src/fluid/includes/mem/pool.h b/src/main/c/includes/mem/pool.h similarity index 100% rename from src/fluid/includes/mem/pool.h rename to src/main/c/includes/mem/pool.h diff --git a/src/fluid/includes/metadatacalc.h b/src/main/c/includes/metadatacalc.h similarity index 100% rename from src/fluid/includes/metadatacalc.h rename to src/main/c/includes/metadatacalc.h diff --git a/src/main/c/includes/electrosphere_client_fluid_cache_FluidChunkData.h b/src/main/c/includes/native/electrosphere_client_fluid_cache_FluidChunkData.h similarity index 100% rename from src/main/c/includes/electrosphere_client_fluid_cache_FluidChunkData.h rename to src/main/c/includes/native/electrosphere_client_fluid_cache_FluidChunkData.h diff --git a/src/main/c/includes/electrosphere_server_fluid_manager_ServerFluidChunk.h b/src/main/c/includes/native/electrosphere_server_fluid_manager_ServerFluidChunk.h similarity index 100% rename from src/main/c/includes/electrosphere_server_fluid_manager_ServerFluidChunk.h rename to src/main/c/includes/native/electrosphere_server_fluid_manager_ServerFluidChunk.h diff --git a/src/main/c/includes/electrosphere_server_fluid_simulator_FluidAcceleratedSimulator.h b/src/main/c/includes/native/electrosphere_server_fluid_simulator_FluidAcceleratedSimulator.h similarity index 100% rename from src/main/c/includes/electrosphere_server_fluid_simulator_FluidAcceleratedSimulator.h rename to src/main/c/includes/native/electrosphere_server_fluid_simulator_FluidAcceleratedSimulator.h diff --git a/src/fluid/includes/simulation.h b/src/main/c/includes/simulation.h similarity index 100% rename from src/fluid/includes/simulation.h rename to src/main/c/includes/simulation.h diff --git a/src/fluid/includes/solver_consts.h b/src/main/c/includes/solver_consts.h similarity index 100% rename from src/fluid/includes/solver_consts.h rename to src/main/c/includes/solver_consts.h diff --git a/src/fluid/includes/utilities.h b/src/main/c/includes/utilities.h similarity index 100% rename from src/fluid/includes/utilities.h rename to src/main/c/includes/utilities.h diff --git a/src/fluid/lib/stb b/src/main/c/lib/stb similarity index 100% rename from src/fluid/lib/stb rename to src/main/c/lib/stb diff --git a/src/fluid/src/chunkmask.c b/src/main/c/src/chunkmask.c similarity index 100% rename from src/fluid/src/chunkmask.c rename to src/main/c/src/chunkmask.c diff --git a/src/fluid/src/densitystep.c b/src/main/c/src/densitystep.c similarity index 100% rename from src/fluid/src/densitystep.c rename to src/main/c/src/densitystep.c diff --git a/src/fluid/src/fluidsim.c b/src/main/c/src/fluidsim.c similarity index 99% rename from src/fluid/src/fluidsim.c rename to src/main/c/src/fluidsim.c index cf9e8581..fbda761a 100644 --- a/src/fluid/src/fluidsim.c +++ b/src/main/c/src/fluidsim.c @@ -1,7 +1,7 @@ #include #include "../includes/utilities.h" #include "../includes/chunkmask.h" -#include "../../main/c/includes/electrosphere_server_fluid_simulator_FluidAcceleratedSimulator.h" +#include "..//includes/native/electrosphere_server_fluid_simulator_FluidAcceleratedSimulator.h" #include "../includes/mainFunctions.h" #include "../includes/chunk.h" #include "../includes/simulation.h" diff --git a/src/fluid/src/javainterface.c b/src/main/c/src/javainterface.c similarity index 100% rename from src/fluid/src/javainterface.c rename to src/main/c/src/javainterface.c diff --git a/src/fluid/src/mem/fluidmem.c b/src/main/c/src/mem/fluidmem.c similarity index 98% rename from src/fluid/src/mem/fluidmem.c rename to src/main/c/src/mem/fluidmem.c index 2099d92c..09e5cd4f 100644 --- a/src/fluid/src/mem/fluidmem.c +++ b/src/main/c/src/mem/fluidmem.c @@ -1,8 +1,8 @@ #include #include -#include "../../../main/c/includes/electrosphere_server_fluid_manager_ServerFluidChunk.h" -#include "../../../main/c/includes/electrosphere_client_fluid_cache_FluidChunkData.h" +#include "../..//includes/native/electrosphere_server_fluid_manager_ServerFluidChunk.h" +#include "../..//includes/native/electrosphere_client_fluid_cache_FluidChunkData.h" #include "../../includes/mem/pool.h" diff --git a/src/fluid/src/mem/pool.c b/src/main/c/src/mem/pool.c similarity index 100% rename from src/fluid/src/mem/pool.c rename to src/main/c/src/mem/pool.c diff --git a/src/fluid/src/metadata/metadatacalc.c b/src/main/c/src/metadata/metadatacalc.c similarity index 100% rename from src/fluid/src/metadata/metadatacalc.c rename to src/main/c/src/metadata/metadatacalc.c diff --git a/src/fluid/src/velocitystep.c b/src/main/c/src/velocitystep.c similarity index 100% rename from src/fluid/src/velocitystep.c rename to src/main/c/src/velocitystep.c