Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of https://framagit.org/simgrid/simgrid
[simgrid.git] / .github / workflows / jarfile.yml
1 name: SimGrid complete jar file generation
2
3 on: [workflow_dispatch]
4
5 jobs:
6   build:
7     runs-on: ${{ matrix.config.os }}-latest
8     strategy:
9         matrix:
10           config:
11           - { name: "Windows MingW", os: windows, cc: "gcc", cxx: "g++", generator: "MinGW Makefiles", cmake_extra_options: "-Denable_lto=OFF" }
12           - { name: "Ubuntu gcc", os: ubuntu, cc: "gcc", cxx: "g++", generator: "Unix Makefiles", cmake_extra_options: "-DLTO_EXTRA_FLAG=auto" }
13           - { name: "MacOS clang", os: macos, cc: "clang", cxx: "clang++", generator: "Unix Makefiles", cmake_extra_options: "-DLTO_EXTRA_FLAG=auto" }
14     steps:
15     - uses: actions/checkout@v2
16      # install dependencies
17     - name: Init options
18       run: |
19           echo "CC=${{ matrix.config.cc }}"   >> $GITHUB_ENV
20           echo "CXX=${{ matrix.config.cxx }}" >> GITHUB_ENV
21     - name: Install boost on ubuntu
22       if: matrix.config.os == 'ubuntu'
23       run: sudo apt-get update && sudo apt-get install -yq libboost-dev
24     - name: Install boost on macos
25       if: matrix.config.os == 'macos'
26       run: brew install boost
27     - name: Install boost and gcc on windows
28       if: matrix.config.os == 'windows'
29       run: |
30         Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
31         scoop install gcc --global
32         echo "BOOST_ROOT=${env:BOOST_ROOT_1_72_0}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
33         echo "BOOST_INCLUDEDIR=${env:BOOST_ROOT_1_72_0}\boost\include" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
34         echo "BOOST_LIBRARYDIR=${env:BOOST_ROOT_1_72_0}\lib" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
35     - name: Build jar with Cmake
36       run: |
37           mkdir build
38           cd build
39           cmake -Denable_documentation=OFF -Denable_java=ON -Denable_msg=ON -Denable_lib_in_jar=ON -Dminimal-bindings=ON -Denable_compile_optimizations=ON -Denable_smpi=OFF ${{ matrix.config.cmake_extra_options }} -G "${{ matrix.config.generator }}" ..
40           make -j2 simgrid-java_jar
41     - name: Upload jar
42       uses: actions/upload-artifact@v2
43       with:
44           name: jar-${{ matrix.config.os }}
45           path: build/simgrid.jar
46
47   create_jar:
48     needs: build
49     runs-on: ubuntu-latest
50     steps:
51       - uses: actions/checkout@v2
52       - name: Download all jars from ubuntu
53         uses: actions/download-artifact@v2
54       - name: Build final jar
55         run: |
56            patch=$(grep -r set\(SIMGRID_VERSION_PATCH ./CMakeLists.txt | sed 's/.*"\([[:digit:]]\+\)".*/\1/g')
57            major=$(grep -r set\(SIMGRID_VERSION_MAJOR ./CMakeLists.txt | sed 's/.*"\([[:digit:]]\+\)".*/\1/g')
58            minor=$(grep -r set\(SIMGRID_VERSION_MINOR ./CMakeLists.txt | sed 's/.*"\([[:digit:]]\+\)".*/\1/g')
59            if [ $patch -ne 0 ]; then
60              version="$major.$minor.$patch"
61            else
62              version="$major.$minor"
63            fi
64            mkdir content
65            cd content
66            for j in  ubuntu macos windows ; do unzip -n ../jar-$j/simgrid.jar ; done
67            strip NATIVE/*/*/*.so
68            x86_64-linux-gnu-strip NATIVE/*/*/lib*dll
69            zip -r ../simgrid-${version}.jar *
70       - name: Upload jar
71         uses: actions/upload-artifact@v2
72         with:
73           name: jar-final
74           path: simgrid-*.jar
75       - name: cleanup artifacts
76         uses: geekyeggo/delete-artifact@v1
77         with:
78           name: |
79             jar-ubuntu
80             jar-windows
81             jar-macos