Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
183 changes: 67 additions & 116 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ on:
paths:
- '.github/workflows/build.yml'
- 'CMakeLists.txt'
- 'CMakeSettings.json'
- 'CMakePresets.json'
- 'scripts/setup.sh'
- 'scripts/setup.ps1'
- 's2e-core'
- 'src/**'

jobs:
Expand All @@ -20,37 +23,20 @@ jobs:
strategy:
fail-fast: false
matrix:
build_bit: ['BUILD_64BIT=OFF', 'BUILD_64BIT=ON']
include:
- build_bit: 'BUILD_64BIT=OFF'
architecture: Win32
preset: windows-win32-debug
- build_bit: 'BUILD_64BIT=ON'
architecture: x64
preset: windows-x64-debug

steps:
- uses: actions/checkout@v4

- name: checkout the submodules
- name: Checkout with submodules
uses: actions/checkout@v4
with:
submodules: recursive

- name: use HTTPS to download NRLMSISE00 table
shell: bash
run: |
cmake_file="s2e-core/ExtLibraries/nrlmsise00/CMakeLists.txt"
ftp_url="ftp://ftp.agi.com/pub/DynamicEarthData"
https_url="https://data.agi.com/pub/DynamicEarthData"

if grep -Fq "$ftp_url" "$cmake_file"; then
sed -i "s|$ftp_url|$https_url|g" "$cmake_file"
elif ! grep -Fq "$https_url" "$cmake_file"; then
echo "NRLMSISE00 table URL was not found in $cmake_file" >&2
exit 1
fi

grep -F "set(NRLMSISE_TABLE_URL_BASE $https_url)" "$cmake_file"

- name: Configure build for x86
uses: ilammy/msvc-dev-cmd@v1
with:
arch: amd64_x86

- name: show tools version
shell: powershell
run: |
Expand All @@ -61,97 +47,66 @@ jobs:
uses: actions/cache@v6
with:
key: extlib-${{ runner.os }}-${{ hashFiles('./s2e-core/ExtLibraries/**') }}-${{ matrix.build_bit }}
path: ./s2e-core/ExtLibraries

- name: build extlib 32bit
if: steps.cache-extlib.outputs.cache-hit != 'true' && matrix.build_bit == 'BUILD_64BIT=OFF'
shell: powershell
working-directory: ./s2e-core/ExtLibraries
run: |
$extlib_dir=(pwd).Path
$settings_dir=(Resolve-Path "../../settings").Path
cmake -G "Visual Studio 17 2022" -A Win32 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DEXT_LIB_DIR="${extlib_dir}" -DSETTINGS_DIR="${settings_dir}" -D${{ matrix.build_bit }}
cmake --build .
path: |
./ExtLibraries
./settings/environment/cspice
./settings/environment/space_weather
./settings/environment/gravity_field

- name: build extlib 64bit
if: steps.cache-extlib.outputs.cache-hit != 'true' && matrix.build_bit == 'BUILD_64BIT=ON'
shell: powershell
working-directory: ./s2e-core/ExtLibraries
run: |
$extlib_dir=(pwd).Path
$settings_dir=(Resolve-Path "../../settings").Path
cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DEXT_LIB_DIR="${extlib_dir}" -DSETTINGS_DIR="${settings_dir}" -D${{ matrix.build_bit }}
cmake --build .

- name: install extlib
- name: build extlib
if: steps.cache-extlib.outputs.cache-hit != 'true'
shell: powershell
working-directory: ./s2e-core/ExtLibraries
run: |
cmake --install .
$extlib_dir=(Join-Path (pwd).Path "ExtLibraries")
$settings_dir=(Resolve-Path "./settings").Path
cmake -S ./s2e-core/ExtLibraries -B ./build/extlibraries-${{ matrix.architecture }} -G "Visual Studio 17 2022" -A ${{ matrix.architecture }} -DEXT_LIB_DIR="${extlib_dir}" -DSETTINGS_DIR="${settings_dir}" -D${{ matrix.build_bit }}
cmake --build ./build/extlibraries-${{ matrix.architecture }} --config Debug
cmake --install ./build/extlibraries-${{ matrix.architecture }} --config Debug

- name: check extlib
shell: powershell
working-directory: ./s2e-core/ExtLibraries
run: |
ls cspice
ls cspice/cspice_msvs*/lib
ls cspice/include
ls cspice/generic_kernels
ls nrlmsise00
ls nrlmsise00/lib*
ls nrlmsise00/lib*/libnrlmsise00.lib
ls nrlmsise00/src

- name: build 32bit
if: matrix.build_bit == 'BUILD_64BIT=OFF'
shell: cmd
run: |
cl.exe
cmake -G "Visual Studio 17 2022" -A Win32 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DEXT_LIB_DIR=./s2e-core/ExtLibraries -D${{ matrix.build_bit }}
cmake --build .
ls ExtLibraries/cspice
ls ExtLibraries/cspice/cspice_msvs*/lib
ls ExtLibraries/cspice/include
ls ExtLibraries/nrlmsise00
ls ExtLibraries/nrlmsise00/lib*
ls ExtLibraries/nrlmsise00/lib*/libnrlmsise00.lib
ls ExtLibraries/nrlmsise00/src
ls settings/environment/cspice/generic_kernels

- name: build 64bit
if: matrix.build_bit == 'BUILD_64BIT=ON'
shell: cmd
- name: build S2E with preset
shell: powershell
run: |
cl.exe
cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_CONFIGURATION_TYPES:STRING="Debug" -DEXT_LIB_DIR=./s2e-core/ExtLibraries -D${{ matrix.build_bit }}
cmake --build .
cmake --preset ${{ matrix.preset }}
cmake --build --preset ${{ matrix.preset }} --parallel

build_s2e_linux:
name: Build on Linux
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
compiler: ['gcc-11 g++-11', 'clang clang++']
build_bit: ['BUILD_64BIT=OFF', 'BUILD_64BIT=ON']
include:
- build_bit: 'BUILD_64BIT=OFF'
preset: linux-x86-debug
compiler: 'gcc-11 g++-11'
- build_bit: 'BUILD_64BIT=ON'
preset: linux-debug
compiler: 'gcc-11 g++-11'
- build_bit: 'BUILD_64BIT=OFF'
preset: linux-x86-debug
compiler: 'clang clang++'
- build_bit: 'BUILD_64BIT=ON'
preset: linux-debug
compiler: 'clang clang++'

steps:
- uses: actions/checkout@v4

- name: checkout the submodules
- name: Checkout with submodules
uses: actions/checkout@v4
with:
submodules: recursive

- name: use HTTPS to download NRLMSISE00 table
shell: bash
run: |
cmake_file="s2e-core/ExtLibraries/nrlmsise00/CMakeLists.txt"
ftp_url="ftp://ftp.agi.com/pub/DynamicEarthData"
https_url="https://data.agi.com/pub/DynamicEarthData"

if grep -Fq "$ftp_url" "$cmake_file"; then
sed -i "s|$ftp_url|$https_url|g" "$cmake_file"
elif ! grep -Fq "$https_url" "$cmake_file"; then
echo "NRLMSISE00 table URL was not found in $cmake_file" >&2
exit 1
fi

grep -F "set(NRLMSISE_TABLE_URL_BASE $https_url)" "$cmake_file"

- name: set compiler
id: compiler
run: |
Expand Down Expand Up @@ -185,37 +140,33 @@ jobs:
uses: actions/cache@v6
with:
key: extlib-${{ runner.os }}-${{ hashFiles('./s2e-core/ExtLibraries/**') }}-${{ matrix.build_bit }}
path: ./s2e-core/ExtLibraries
path: |
./ExtLibraries
./settings/environment/cspice
./settings/environment/space_weather
./settings/environment/gravity_field

- name: build extlib
if: steps.cache-extlib.outputs.cache-hit != 'true'
working-directory: ./s2e-core/ExtLibraries
run: |
settings_dir="$(realpath ../../settings)"
cmake . -D${{ matrix.build_bit }} -DEXT_LIB_DIR="$(pwd)" -DSETTINGS_DIR="$settings_dir"
cmake --build .
- name: install extlib
if: steps.cache-extlib.outputs.cache-hit != 'true'
working-directory: ./s2e-core/ExtLibraries
run: |
cmake --install .
cmake -S ./s2e-core/ExtLibraries -B ./build/extlibraries-${{ matrix.preset }} -D${{ matrix.build_bit }} -DEXT_LIB_DIR="$(pwd)/ExtLibraries" -DSETTINGS_DIR="$(realpath ./settings)"
cmake --build ./build/extlibraries-${{ matrix.preset }} --parallel
cmake --install ./build/extlibraries-${{ matrix.preset }}
- name: check extlib
working-directory: ./s2e-core/ExtLibraries
run: |
ls cspice
ls cspice/cspice_unix*
ls cspice/include
ls cspice/generic_kernels
ls nrlmsise00
ls nrlmsise00/lib*
ls nrlmsise00/lib*/libnrlmsise00.a
ls nrlmsise00/src
ls ExtLibraries/cspice
ls ExtLibraries/cspice/cspice_unix*
ls ExtLibraries/cspice/include
ls ExtLibraries/nrlmsise00
ls ExtLibraries/nrlmsise00/lib*
ls ExtLibraries/nrlmsise00/lib*/libnrlmsise00.a
ls ExtLibraries/nrlmsise00/src
ls settings/environment/cspice/generic_kernels

- name: build
working-directory: .
env:
CC: ${{ steps.compiler.outputs.CC }}
CXX: ${{ steps.compiler.outputs.CXX }}
run: |
cmake . -D${{ matrix.build_bit }} -DEXT_LIB_DIR=./s2e-core/ExtLibraries
cmake --build .
cmake --preset ${{ matrix.preset }}
cmake --build --preset ${{ matrix.preset }} --parallel
44 changes: 23 additions & 21 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,6 @@ file(GLOB_RECURSE SOURCE_FILES ${CMAKE_CURRENT_LIST_DIR}/src/*.cpp)
# Uncomment the following line to exclude any files that match the REGEX from SOURCE_FILES
# list(FILTER SOURCE_FILES EXCLUDE REGEX ${CMAKE_CURRENT_LIST_DIR}/src/example.cpp)

# Create executable file
add_executable(${PROJECT_NAME} ${SOURCE_FILES})

## cspice library
if(APPLE)
if(APPLE_SILICON)
Expand Down Expand Up @@ -176,25 +173,30 @@ if(NOT NRLMSISE00_LIB)
message(FATAL_ERROR "nrlmsise00 not found in ${EXT_LIB_DIR}")
endif()

## Linking libraries
set(S2E_LIBRARIES
IGRF WRAPPER_NRLMSISE00 INIH SGP4 UTIL OPTICS RELATIVE_ORBIT_MODELS ORBIT_MODELS GEODESY MATH
# link hack for MSVC link.exe
add_library(lib${PROJECT_NAME}
$<TARGET_OBJECTS:LOGGER>
$<TARGET_OBJECTS:SETTING_FILE_READER>
$<TARGET_OBJECTS:INIH>
$<TARGET_OBJECTS:UTILITIES>

$<TARGET_OBJECTS:COMPONENT>
$<TARGET_OBJECTS:DISTURBANCE>
$<TARGET_OBJECTS:DYNAMICS>
$<TARGET_OBJECTS:GLOBAL_ENVIRONMENT>
$<TARGET_OBJECTS:LOCAL_ENVIRONMENT>
$<TARGET_OBJECTS:MATH_PHYSICS>
$<TARGET_OBJECTS:SIMULATION>
)
add_executable(${PROJECT_NAME} ${SOURCE_FILES})

target_link_libraries(${PROJECT_NAME}
lib${PROJECT_NAME}

# ExtLibraries
${NRLMSISE00_LIB}
${CSPICE_LIB}
)
# Initialize link
target_link_libraries(COMPONENT DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT MATH_PHYSICS SETTING_FILE_READER LOGGER UTILITIES)
target_link_libraries(DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT SIMULATION MATH_PHYSICS)
target_link_libraries(DISTURBANCE DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT MATH_PHYSICS)
target_link_libraries(SIMULATION DYNAMICS GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT DISTURBANCE MATH_PHYSICS)
target_link_libraries(GLOBAL_ENVIRONMENT ${CSPICE_LIB} MATH_PHYSICS)
target_link_libraries(LOCAL_ENVIRONMENT GLOBAL_ENVIRONMENT ${CSPICE_LIB} MATH_PHYSICS)
target_link_libraries(MATH_PHYSICS ${NRLMSISE00_LIB})
target_link_libraries(SETTING_FILE_READER INIH)

target_link_libraries(${PROJECT_NAME} DYNAMICS)
target_link_libraries(${PROJECT_NAME} DISTURBANCE)
target_link_libraries(${PROJECT_NAME} SIMULATION)
target_link_libraries(${PROJECT_NAME} GLOBAL_ENVIRONMENT LOCAL_ENVIRONMENT)
target_link_libraries(${PROJECT_NAME} COMPONENT)

## C2A integration
if(USE_C2A)
Expand Down
Loading
Loading