diff --git a/Jenkinsfile b/Jenkinsfile index eb4bd54..5f8de41 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,67 +1,77 @@ -pipeline { - agent any - options { - skipDefaultCheckout(true) - } - environment { - CI_OUTPUT_NAME = "RSE_Model" - CI_BUILD_NUMBER = "$BUILD_NUMBER" - } - stages { - stage('Prepare') { - steps { - cleanWs() - } - } - stage('Build') { - steps { - parallel( - linux: { - dir("linux") { - checkout([$class: 'GitSCM', branches: [[name: '**']], browser: [$class: 'GiteaBrowser', repoUrl: 'https://git.jcsmith.fr/jackcartersmith/RSE-Model.git'], extensions: [], userRemoteConfigs: [[credentialsId: 'jenkins-ssh', url: 'ssh://git@git.jcsmith.fr:2322/JCS-Prod/RSE-Model.git']]]) - cmakeBuild buildDir: 'build', installation: 'latest', steps: [[args: 'all']] - } - }, - windows: { - dir("windows") { - checkout([$class: 'GitSCM', branches: [[name: '**']], browser: [$class: 'GiteaBrowser', repoUrl: 'https://git.jcsmith.fr/jackcartersmith/RSE-Model.git'], extensions: [], userRemoteConfigs: [[credentialsId: 'jenkins-ssh', url: 'ssh://git@git.jcsmith.fr:2322/JCS-Prod/RSE-Model.git']]]) - cmakeBuild buildDir: 'build', cmakeArgs: '-DGNU_HOST=x86_64-w64-mingw32 -DCMAKE_TOOLCHAIN_FILE=../mingw_cross_toolchain.cmake -D"ZLIB_INCLUDE_DIR=/mnt/cc-libs/mingw64/zlib/1.2.11/include" -D"ZLIB_LIBRARY=/mnt/cc-libs/mingw64/zlib/1.2.11/lib/libzlib.dll.a" -D"PNG_PNG_INCLUDE_DIR=/mnt/cc-libs/mingw64/libpng/1.6.37/include" -D"PNG_LIBRARY=/mnt/cc-libs/mingw64/libpng/1.6.37/lib/libpng.dll.a"', installation: 'latest', steps: [[args: 'all']] - } - } - ) - } - } - stage('Deploy') { - steps { - dir("zip_linux") { - sh 'cp ../linux/build/${CI_OUTPUT_NAME}-1.0.1.${BUILD_NUMBER}* .' - } - dir("zip_win") { - sh 'cp ../windows/build/${CI_OUTPUT_NAME}-1.0.1.${BUILD_NUMBER}* /mnt/cc-libs/mingw64/zlib/1.2.11/bin/libzlib.dll /mnt/cc-libs/mingw64/libpng/1.6.37/bin/libpng16.dll .' - } - zip archive: false, dir: 'zip_linux', exclude: '', glob: '', zipFile: 'x64.zip' - sh 'mv x64.zip ${CI_OUTPUT_NAME}-1.0.1.${BUILD_NUMBER}_x64.zip' - zip archive: false, dir: 'zip_win', exclude: '', glob: '', zipFile: 'mingw64.zip' - sh 'mv mingw64.zip ${CI_OUTPUT_NAME}-1.0.1.${BUILD_NUMBER}_mingw64.zip' - } - } - stage('Sign') { - steps { - sh 'ls -l' - sh 'gpg --batch --detach-sign -o ${CI_OUTPUT_NAME}-1.0.1.${BUILD_NUMBER}_x64.zip.gpg ${CI_OUTPUT_NAME}-1.0.1.${BUILD_NUMBER}_x64.zip' - sh 'gpg --batch --detach-sign -o ${CI_OUTPUT_NAME}-1.0.1.${BUILD_NUMBER}_mingw64.zip.gpg ${CI_OUTPUT_NAME}-1.0.1.${BUILD_NUMBER}_mingw64.zip' - archiveArtifacts(artifacts: '*.zip,*.gpg') - } - } - } - /* - post { - always { - cleanWs(cleanWhenNotBuilt: false, - deleteDirs: true, - disableDeferredWipeout: true, - notFailBuild: true) - } - } - */ +pipeline { + agent any + options { + skipDefaultCheckout(true) + } + environment { + CI_OUTPUT_NAME = "RSE_Texture" + CI_BUILD_NUMBER = "$BUILD_NUMBER" + } + stages { + stage('Prepare') { + steps { + cleanWs() + rtConanClient(id: "conan", userHome: "/home/jackcartersmith") + } + } + stage('Build') { + steps { + parallel( + linux: { + dir("linux") { + checkout([$class: 'GitSCM', branches: [[name: '**']], browser: [$class: 'GiteaBrowser', repoUrl: 'https://git.jcsmith.fr/JCS-Prod/RSE-Texture'], extensions: [], userRemoteConfigs: [[credentialsId: 'jenkins-ssh', url: 'ssh://git@git.jcsmith.fr:2322/JCS-Prod/RSE-Texture.git']]]) + dir("build") { + rtConanRun(clientId: "conan", command: "install .. --build missing") + } + cmakeBuild buildDir: 'build', installation: 'latest', steps: [[args: 'all']] + } + }, + windows: { + dir("windows") { + checkout([$class: 'GitSCM', branches: [[name: '**']], browser: [$class: 'GiteaBrowser', repoUrl: 'https://git.jcsmith.fr/JCS-Prod/RSE-Texture'], extensions: [], userRemoteConfigs: [[credentialsId: 'jenkins-ssh', url: 'ssh://git@git.jcsmith.fr:2322/JCS-Prod/RSE-Texture.git']]]) + dir("build") { + rtConanRun(clientId: "conan", command: "install .. --profile windows --build missing") + } + cmakeBuild buildDir: 'build', cmakeArgs: '-DGNU_HOST=x86_64-w64-mingw32 -DCMAKE_TOOLCHAIN_FILE=../mingw_cross_toolchain.cmake', installation: 'latest', steps: [[args: 'all']] + } + } + ) + } + } + stage('Deploy') { + steps { + dir("zip_linux") { + sh 'cp ../linux/build/${CI_OUTPUT_NAME}-1.0.1.${BUILD_NUMBER}* .' + } + dir("zip_win") { + sh 'cp ../windows/build/${CI_OUTPUT_NAME}-1.0.1.${BUILD_NUMBER}* ../windows/build/*.dll .' + } + zip archive: false, dir: 'zip_linux', exclude: '', glob: '', zipFile: 'x64.zip' + sh 'mv x64.zip ${CI_OUTPUT_NAME}-1.0.1.${BUILD_NUMBER}_x64.zip' + zip archive: false, dir: 'zip_win', exclude: '', glob: '', zipFile: 'mingw64.zip' + sh 'mv mingw64.zip ${CI_OUTPUT_NAME}-1.0.1.${BUILD_NUMBER}_mingw64.zip' + archiveArtifacts(artifacts: '*.zip') + fingerprint(targets: '*.zip') + } + } + stage('Sign') { + steps { + sh 'ls -l' + sh 'gpg --batch --detach-sign -o ${CI_OUTPUT_NAME}-1.0.1.${BUILD_NUMBER}_x64.zip.gpg ${CI_OUTPUT_NAME}-1.0.1.${BUILD_NUMBER}_x64.zip' + sh 'gpg --batch --detach-sign -o ${CI_OUTPUT_NAME}-1.0.1.${BUILD_NUMBER}_mingw64.zip.gpg ${CI_OUTPUT_NAME}-1.0.1.${BUILD_NUMBER}_mingw64.zip' + archiveArtifacts(artifacts: '*.gpg') + fingerprint(targets: '*.gpg') + } + } + } + /* + post { + always { + cleanWs(cleanWhenNotBuilt: false, + deleteDirs: true, + disableDeferredWipeout: true, + notFailBuild: true) + } + } + */ } \ No newline at end of file diff --git a/README.md b/README.md index e7cdc3a..fb55f45 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,57 @@ The collection consist of few independants modules, each of them deals with spec All modules are independants. This is the **'MODEL'** module. -:exclamation: **Master branch is ugly for now and should not be used, please take only released versions.** :exclamation: - ## MODEL MODULE -It's extract texture datas from Rogue Squadron 3D (PC) game models files (HOB). \ No newline at end of file +It's extract texture datas from Rogue Squadron 3D (PC) game models files (HOB). + +This module can do: +- Extract objects inside HOB files to Wavefront OBJ format, +- Extract automatically inside subfolder (usefull when you have multiples objects to extract), +- Multiple inputs files. + +## TODO + +- Add textures to models. +- Discover all unknow fields, animation, bones mesh, etc. + +### Using + +`RSE-Model_"version" [options] ` or you can simply drag&drop HOB files on it. + +A futur main program can extract all HOB files directly from DAT file. +Due to issue with copyrights, I can't provide samples... You need to extract HOB files yourself. + + + +### Options + +- -h Print this message +- -v Activate verbose output +- -no-subdir Extract textures directly inside current folder + +### Dependencies + +- obj-lib: as obj file exporter. (https://github.com/rlk/obj) + +### Compiling + +You can compile on both Windows (MinGW) or native Linux system thanks to CMake. + +To compile, just clone and launch cmake: + +```shell +cmake . +make +make install +``` + +We can also use cross-compilation (after installing `mingw64` and `cmake` packages on your distrib): + +```shell +mkdir build && cd build +cmake -DGNU_HOST=x86_64-w64-mingw32 \ + -DCMAKE_TOOLCHAIN_FILE=../mingw_cross_toolchain.cmake \ + .. +cmake --build . +``` \ No newline at end of file