Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
37d6009
Update version number to 1.4.0
daleroberts Mar 9, 2026
0de7660
Remove DynaML.xsd, including unit tests
daleroberts Mar 17, 2026
5963767
Fix locale issues
daleroberts Mar 19, 2026
eb53c63
Set LD_LIBRARY_PATH for Intel MKL testing, and set Threads
daleroberts Mar 19, 2026
d16c374
Static build fixes for locale and threading
daleroberts Mar 19, 2026
4129428
Fix CMAKE_ARCHIVE_OUTPUT_DIRECTORY
daleroberts Mar 19, 2026
6685c54
Add further tests to run with GitHub Actions
daleroberts Mar 19, 2026
4b0455e
Initial changes to support #320
rogerfraser Mar 19, 2026
f2da835
Fix deadlock in error handling and inject default values that used to…
daleroberts Mar 20, 2026
9df978c
Add SIRGAS95|2000 substitutions
rogerfraser Mar 20, 2026
cef6587
Merge pull request #348 from GeoscienceAustralia/dr-fix-346
daleroberts Mar 20, 2026
f348b6a
Merge pull request #350 from GeoscienceAustralia/dr-349
daleroberts Mar 20, 2026
33d890b
Initial changes to support #320
rogerfraser Mar 19, 2026
df6e90e
Add SIRGAS95|2000 substitutions
rogerfraser Mar 20, 2026
ac3e065
Merge branch '1.4.0' of https://github.com/rogerfraser/DynAdjust into…
rogerfraser Mar 23, 2026
346cb9e
Static build fixes
daleroberts Apr 14, 2026
97072da
Add iteration times
daleroberts Apr 14, 2026
a90fbce
Merge pull request #353 from rogerfraser/1.4.0
daleroberts Apr 15, 2026
131b6d8
Merge pull request #354 from GeoscienceAustralia/dr-341
daleroberts Apr 15, 2026
5746c7d
Merge pull request #355 from GeoscienceAustralia/dr-342
daleroberts Apr 15, 2026
ba3a99c
Report adjustment durations in HH:MM:SS for durations greater than 60s
daleroberts Apr 14, 2026
11330cc
Add unit tests for FormatElapsedTime helper (issue #351)
daleroberts Apr 14, 2026
8f7a8ed
Reroute all time formats to FormatElapsedTime
daleroberts Apr 15, 2026
216a1d3
Merge pull request #356 from GeoscienceAustralia/dr-351
daleroberts Apr 15, 2026
b8e56e3
Add support for epoch of observation #325
daleroberts Apr 21, 2026
ab882b7
Merge pull request #357 from GeoscienceAustralia/dr-325
daleroberts Apr 21, 2026
a93a435
Memory and performance improvements
daleroberts Apr 14, 2026
6008a08
Merge pull request #358 from GeoscienceAustralia/dr-344
daleroberts Apr 22, 2026
97daf0c
Performance updates
daleroberts May 4, 2026
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
6 changes: 4 additions & 2 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1145,8 +1145,9 @@ jobs:
# Source Intel OneAPI environment
source /opt/intel/oneapi/setvars.sh

# Modify PATH to use our binaries
# Modify PATH and LD_LIBRARY_PATH to use our binaries
export PATH="../bin:$PATH"
export LD_LIBRARY_PATH="../bin:${LD_LIBRARY_PATH:-}"

# Run the test script and capture output
set +e # Don't exit on error
Expand All @@ -1169,8 +1170,9 @@ jobs:
# Source Intel OneAPI environment
source /opt/intel/oneapi/setvars.sh

# Modify PATH to use our binaries
# Modify PATH and LD_LIBRARY_PATH to use our binaries
export PATH="../bin:$PATH"
export LD_LIBRARY_PATH="../bin:${LD_LIBRARY_PATH:-}"

# Run the test script and capture output
set +e # Don't exit on error
Expand Down
97 changes: 75 additions & 22 deletions dynadjust/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.15)
project(dynadjust VERSION 1.3.0)
project(dynadjust VERSION 1.4.1)

option(USE_MKL "Use Intel MKL (Linux and Windows)" OFF)
option(BUILD_TESTING "Enable testing" OFF)
Expand Down Expand Up @@ -59,17 +59,23 @@ if(BUILD_TESTING)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
endif()

# Set output directories for all platforms to use ../bin/
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/../bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/../bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/../bin)
# Set output directories for all platforms to use ../bin/ (unless overridden)
if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/../bin)
endif()
if(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/../bin)
endif()
if(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/../bin)
endif()

# For multi-config generators (Visual Studio, Xcode)
foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG_UPPER)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${CMAKE_SOURCE_DIR}/../bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${CMAKE_SOURCE_DIR}/../bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${CMAKE_SOURCE_DIR}/../bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
endforeach()

if (BUILD_STATIC)
Expand Down Expand Up @@ -189,7 +195,7 @@ else()
endif()
message(STATUS "Found XercesC (${XercesC_INCLUDE_DIRS} ${XercesC_LIBRARIES})")

# Static builds need ICU for Xerces transcoding (glibc iconv can't dlopen gconv modules in static binaries)
# Static builds need ICU for Xerces transcoding (glibc iconv can't dlopen gconv modules in static binaries).
if(BUILD_STATIC AND UNIX AND NOT APPLE)
find_package(ICU COMPONENTS uc data)
if(ICU_FOUND)
Expand Down Expand Up @@ -300,10 +306,13 @@ message(STATUS "Found Boost version: ${Boost_VERSION}")
# Set up libraries
# ----------------------------------------------------------------------------

find_package(Threads REQUIRED)

set(DNA_LIBRARIES
${Boost_LIBRARIES}
${XercesC_LIBRARIES}
${XERCES_ICU_LIBRARIES}
Threads::Threads
)

# ----------------------------------------------------------------------------
Expand Down Expand Up @@ -608,6 +617,23 @@ if(BUILD_STATIC)
endif()
endforeach()

# For MKL builds, add static MKL libraries (MKL::MKL is an imported
# target that the generic .a finder above cannot resolve)
if(USE_MKL AND MKL_FOUND AND DEFINED ENV{MKLROOT})
set(MKL_LIB_DIR "$ENV{MKLROOT}/lib")
if(ILP64)
set(MKL_INTERFACE_LIB "${MKL_LIB_DIR}/libmkl_intel_ilp64.a")
else()
set(MKL_INTERFACE_LIB "${MKL_LIB_DIR}/libmkl_intel_lp64.a")
endif()
list(APPEND STATIC_LIBS_LIST
"-Wl,--start-group"
"${MKL_INTERFACE_LIB}"
"${MKL_LIB_DIR}/libmkl_sequential.a"
"${MKL_LIB_DIR}/libmkl_core.a"
"-Wl,--end-group")
endif()

message("")
message(STATUS "STATIC_LIBS_LIST=${STATIC_LIBS_LIST}")

Expand Down Expand Up @@ -916,6 +942,13 @@ if (BUILD_TESTING)
target_link_libraries(test_snx_file_writer PRIVATE ${DNA_LIBRARIES})
target_compile_definitions(test_snx_file_writer PRIVATE __BINARY_NAME__="test_snx_file_writer" __BINARY_DESC__="Unit tests for SNX file writer")

# Test: test_format_elapsed_time
add_executable(test_format_elapsed_time
${UNIT_TEST_DIR}/test_format_elapsed_time.cpp
)
target_include_directories(test_format_elapsed_time PRIVATE ${UNIT_TEST_DIR} ${CMAKE_SOURCE_DIR}/include)
target_compile_definitions(test_format_elapsed_time PRIVATE __BINARY_NAME__="test_format_elapsed_time" __BINARY_DESC__="Unit tests for FormatElapsedTime helper")

# Register unit tests with CTest
add_test(NAME unit-MatrixTest COMMAND $<TARGET_FILE:test_matrix>)
add_test(NAME unit-MsrToStnSortTest COMMAND $<TARGET_FILE:test_msr_to_stn_sort>)
Expand All @@ -931,6 +964,7 @@ if (BUILD_TESTING)
add_test(NAME unit-AslFileLoaderTest COMMAND $<TARGET_FILE:test_asl_file_loader>)
add_test(NAME unit-BmsFileLoaderTest COMMAND $<TARGET_FILE:test_bms_file_loader>)
add_test(NAME unit-SnxFileWriterTest COMMAND $<TARGET_FILE:test_snx_file_writer>)
add_test(NAME unit-FormatElapsedTimeTest COMMAND $<TARGET_FILE:test_format_elapsed_time>)

# ........................................................................
# Functional tests
Expand Down Expand Up @@ -974,7 +1008,10 @@ if (BUILD_TESTING)
add_test (NAME import-urban-network COMMAND $<TARGET_FILE:${DNAIMPORT_TARGET}> -n urban urban-network.stn urban-network.msr --flag-unused-stations)
add_test (NAME geoid-urban-network COMMAND $<TARGET_FILE:${DNAGEOID_TARGET}> urban -g urban-network-geoid.gsb --export-dna-geo)
add_test (NAME segment-urban-network COMMAND $<TARGET_FILE:${DNASEGMENT_TARGET}> urban --min 50 --max 150 --test-integrity)
add_test (NAME adjust-urban-network-verbose COMMAND $<TARGET_FILE:${DNAADJUST_TARGET}> urban --verbose 3)
add_test (NAME import-urban-network-verbose COMMAND $<TARGET_FILE:${DNAIMPORT_TARGET}> -n urban_verbose urban-network.stn urban-network.msr --flag-unused-stations)
add_test (NAME geoid-urban-network-verbose COMMAND $<TARGET_FILE:${DNAGEOID_TARGET}> urban_verbose -g urban-network-geoid.gsb --export-dna-geo)
add_test (NAME segment-urban-network-verbose COMMAND $<TARGET_FILE:${DNASEGMENT_TARGET}> urban_verbose --min 50 --max 150 --test-integrity)
add_test (NAME adjust-urban-network-verbose COMMAND $<TARGET_FILE:${DNAADJUST_TARGET}> urban_verbose --verbose 3)
add_test (NAME adjust-urban-network COMMAND $<TARGET_FILE:${DNAADJUST_TARGET}> urban --output-adj-msr --phased --stn-corrections --export-sinex-file --export-xml-stn-file --export-dna-stn-file --output-pos-uncertainty --export-dna-msr --export-xml-msr)
add_test (NAME plot-urban-network-01 COMMAND $<TARGET_FILE:${DNAPLOT_TARGET}> urban --phased --label-sta --correction-arrows --label-corr --compute-corrections --scale-arrows 10.5 --error-ellipse --positional-uncertainty --scale-ellipse-c 10.5)
add_test (NAME plot-urban-network-02 COMMAND $<TARGET_FILE:${DNAPLOT_TARGET}> urban --phased --label-sta --label-constraints --correction-arrows --label-corr --compute-corrections --scale-arrows 10.5 --error-ellipse --positional-uncertainty --scale-ellipse-c 10.5 --block-number 2 --alternate-name)
Expand Down Expand Up @@ -1098,14 +1135,36 @@ if (BUILD_TESTING)
add_test (NAME test-urban-phased-network COMMAND $<TARGET_FILE:${DNADIFF_TARGET}> urban.phased.adj urban.phased.adj.expected --skip-to-marker "M Station 1" -t 0.001)
add_test (NAME test-urban-thread-network COMMAND $<TARGET_FILE:${DNADIFF_TARGET}> urban_mt.phased-mt.adj urban_mt.phased-mt.adj.expected --skip-to-marker "M Station 1" -t 0.01 -v)

# 8. Source tag preservation in --export-xml (issue #317)
# Source tag preservation in --export-xml (issue #317)
# Import XML data with <Source> tags and verify they are preserved in export
add_test (NAME import-source-test COMMAND $<TARGET_FILE:${DNAIMPORT_TARGET}> -n srctest source-test-stn.xml source-test-msr.xml --export-xml -r GDA2020)
add_test (NAME check-source-import COMMAND bash check_source_tags.sh srctestmsr.xml CAMPAIGN_2023A CAMPAIGN_2023B EMPTY)
# Transform to a different frame and verify <Source> tags survive reftran
add_test (NAME reftran-source-test COMMAND $<TARGET_FILE:${DNAREFTRAN_TARGET}> srctest -r itrf2014 -e 01.01.2020 --export-xml)
add_test (NAME check-source-reftran COMMAND bash check_source_tags.sh srctest.ITRF2014.01.01.2020msr.xml CAMPAIGN_2023A CAMPAIGN_2023B EMPTY)

# 8a. XML import with and without xsi:noNamespaceSchemaLocation (issue #346)
# Verify dnaimport handles XML files regardless of whether the schema location
# attribute is present. Strip the attribute and import each sample data pair.

# gnss-network: with schema location (original files)
add_test (NAME import-xml-gnss-with-xsd COMMAND $<TARGET_FILE:${DNAIMPORT_TARGET}> -n xsd_gnss gnss-networkstn.xml gnss-networkmsr.xml -r GDA2020)
# gnss-network: without schema location
add_test (NAME import-xml-gnss-strip COMMAND bash strip_schema_location.sh gnss-networkstn.xml gnss-networkstn-noxsd.xml)
add_test (NAME import-xml-gnss-strip-msr COMMAND bash strip_schema_location.sh gnss-networkmsr.xml gnss-networkmsr-noxsd.xml)
add_test (NAME import-xml-gnss-without-xsd COMMAND $<TARGET_FILE:${DNAIMPORT_TARGET}> -n xsd_gnss gnss-networkstn-noxsd.xml gnss-networkmsr-noxsd.xml -r GDA2020)
set_tests_properties(import-xml-gnss-strip import-xml-gnss-strip-msr PROPERTIES FIXTURES_SETUP gnss_strip)
set_tests_properties(import-xml-gnss-without-xsd PROPERTIES FIXTURES_REQUIRED gnss_strip)

# urban-network: with schema location
add_test (NAME import-xml-urban-with-xsd COMMAND $<TARGET_FILE:${DNAIMPORT_TARGET}> -n xsd_urban urban-networkstn.xml urban-networkmsr.xml -r GDA2020)
# urban-network: without schema location
add_test (NAME import-xml-urban-strip COMMAND bash strip_schema_location.sh urban-networkstn.xml urban-networkstn-noxsd.xml)
add_test (NAME import-xml-urban-strip-msr COMMAND bash strip_schema_location.sh urban-networkmsr.xml urban-networkmsr-noxsd.xml)
add_test (NAME import-xml-urban-without-xsd COMMAND $<TARGET_FILE:${DNAIMPORT_TARGET}> -n xsd_urban urban-networkstn-noxsd.xml urban-networkmsr-noxsd.xml -r GDA2020)
set_tests_properties(import-xml-urban-strip import-xml-urban-strip-msr PROPERTIES FIXTURES_SETUP urban_strip)
set_tests_properties(import-xml-urban-without-xsd PROPERTIES FIXTURES_REQUIRED urban_strip)

# 9. gnss reference frame transformations
add_test (NAME ref-gnss01-network COMMAND $<TARGET_FILE:${DNAREFTRAN_TARGET}> gnss -r itrf2014 -e 01.01.2020)
add_test (NAME ref-gnss02-network COMMAND $<TARGET_FILE:${DNAREFTRAN_TARGET}> gnss -r itrf1988 -e 03.12.1995)
Expand Down Expand Up @@ -1744,16 +1803,8 @@ if (BUILD_TESTING)
add_test (NAME import-no-frame COMMAND $<TARGET_FILE:${DNAIMPORT_TARGET}> -n sample -r itrf1975 dsg.stn dsg.msr)
# no stations and measurements (generated above)
add_test (NAME import-no-data COMMAND $<TARGET_FILE:${DNAIMPORT_TARGET}> -n null ./null.stn ./null.msr)
# no DynaML.xsd - remove file in platform-independent manner (using CMake command) by setting up a test dependency
add_test (NAME import-no-xsd-file-remove COMMAND ${CMAKE_COMMAND} -E remove DynaML.xsd)
add_test (NAME import-no-xsd-file COMMAND $<TARGET_FILE:${DNAIMPORT_TARGET}> -n gnss gnss-networkstn.xml gnss-networkmsr.xml)
set_tests_properties(import-no-xsd-file PROPERTIES DEPENDS import-no-xsd-file-remove TIMEOUT 5)
# Restore DynaML.xsd after testing its absence
add_test (NAME import-no-xsd-file-restore COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../sampleData/DynaML.xsd DynaML.xsd)
set_tests_properties(import-no-xsd-file-restore PROPERTIES DEPENDS import-no-xsd-file)
# no geoid file
add_test (NAME import-no-geoid COMMAND $<TARGET_FILE:${DNAIMPORT_TARGET}> -n geoid --geo-file ./nofile.geo)
set_tests_properties(import-no-geoid PROPERTIES DEPENDS import-no-xsd-file-restore)
# no project file
add_test (NAME import-no-project COMMAND $<TARGET_FILE:${DNAIMPORT_TARGET}> -p ./nofile.dnaproj)
# measurement stns not in station file
Expand All @@ -1765,7 +1816,7 @@ if (BUILD_TESTING)
add_test (NAME import-misc-network-size COMMAND $<TARGET_FILE:${DNAIMPORT_TARGET}> -n contig --import-contiguous-stn-msr 5000 --export-dna)

set_tests_properties(import-no-option import-invalid-option import-invalid-file import-nearby import-no-files import-no-frame
import-no-data import-no-xsd-file import-no-geoid import-no-project import-no-stns import-no-help
import-no-data import-no-geoid import-no-project import-no-stns import-no-help
import-misc-block-size import-misc-network-size import-misc-07
PROPERTIES WILL_FAIL TRUE)

Expand Down Expand Up @@ -1942,6 +1993,9 @@ if (BUILD_TESTING)
set_tests_properties(
import-urban-network geoid-urban-network segment-urban-network adjust-urban-network
PROPERTIES RUN_SERIAL TRUE)
set_tests_properties(
import-urban-network-verbose geoid-urban-network-verbose segment-urban-network-verbose adjust-urban-network-verbose
PROPERTIES RUN_SERIAL TRUE)
set_tests_properties(
import-urban-network-thread reftran-urban-network-thread geoid-urban-network-thread segment-urban-network-thread adjust-urban-network-thread-01
PROPERTIES RUN_SERIAL TRUE)
Expand Down Expand Up @@ -1986,7 +2040,7 @@ if (BUILD_TESTING)
unit-AmlFileLoaderTest unit-BmsFileTest unit-NetworkDataLoaderTest
unit-MeasurementProcessorTest unit-DynAdjustPrinterTest unit-GNSSNstatSortTest
unit-BstFileLoaderTest unit-AslFileLoaderTest unit-BmsFileLoaderTest
unit-SnxFileWriterTest
unit-SnxFileWriterTest unit-FormatElapsedTimeTest
)
set_tests_properties(${UNIT_TESTS} PROPERTIES
RUN_SERIAL FALSE
Expand All @@ -2007,4 +2061,3 @@ endif ()

message ("")
message ("")

57 changes: 48 additions & 9 deletions dynadjust/cmake/StaticBuildOptimizations.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,59 @@ function(optimize_static_target TARGET_NAME)
if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
set_property(TARGET ${TARGET_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
endif()

# Platform-specific optimizations
if(UNIX AND NOT APPLE)
# Linux-specific optimizations
target_link_options(${TARGET_NAME} PRIVATE
-static
-Wl,--gc-sections # Remove unused sections
-Wl,--as-needed # Only link libraries that are actually used
-Wl,-O2 # Optimize at link time
-Wl,--strip-all # Strip all symbols
-static-libgcc
-static-libstdc++
-Wl,--as-needed
-Wl,-O2
-Wl,--strip-all
# glibc 2.34+ merged libpthread into libc; libpthread.a is an
# empty stub. libstdc++.a references ALL pthread functions via
# weak aliases (__gthrw_), and glibc defines them as WEAK (W)
# in libc.a. LLD will not pull a weak-defined archive member to
# satisfy a weak-undefined reference, leaving every pthread
# symbol at address 0 and crashing at runtime.
# Fix: add a strong undefined reference (-u) for each symbol.
# This forces LLD to pull in each object from libc.a, making
# the weak-defined symbol available for the weak refs to bind to.
-Wl,-u,pthread_once
-Wl,-u,pthread_getspecific
-Wl,-u,pthread_setspecific
-Wl,-u,pthread_create
-Wl,-u,pthread_join
-Wl,-u,pthread_equal
-Wl,-u,pthread_self
-Wl,-u,pthread_detach
-Wl,-u,pthread_cancel
-Wl,-u,pthread_mutex_lock
-Wl,-u,pthread_mutex_trylock
-Wl,-u,pthread_mutex_unlock
-Wl,-u,pthread_mutex_init
-Wl,-u,pthread_mutex_destroy
-Wl,-u,pthread_cond_init
-Wl,-u,pthread_cond_broadcast
-Wl,-u,pthread_cond_signal
-Wl,-u,pthread_cond_wait
-Wl,-u,pthread_cond_timedwait
-Wl,-u,pthread_cond_destroy
-Wl,-u,pthread_key_create
-Wl,-u,pthread_key_delete
-Wl,-u,pthread_mutexattr_init
-Wl,-u,pthread_mutexattr_settype
-Wl,-u,pthread_mutexattr_destroy
-Wl,-u,pthread_attr_init
-Wl,-u,pthread_attr_destroy
-Wl,-u,pthread_attr_setdetachstate
-Wl,-u,pthread_exit
-Wl,-u,__pthread_key_create
)
target_link_libraries(${TARGET_NAME} PRIVATE pthread m dl)
target_compile_options(${TARGET_NAME} PRIVATE
-ffunction-sections # Put each function in its own section
-fdata-sections # Put each data item in its own section
-ffunction-sections
-fdata-sections
)
elseif(APPLE)
# macOS-specific optimizations
Expand Down
8 changes: 4 additions & 4 deletions dynadjust/dynadjust.rc
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
//

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,3,0,0
PRODUCTVERSION 1,3,0,0
FILEVERSION 1,4,1,0
PRODUCTVERSION 1,4,1,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
Expand All @@ -42,12 +42,12 @@ BEGIN
BLOCK "040904b0"
BEGIN
VALUE "FileDescription", "DynAdjust is a rigorous, high performance least squares adjustment application."
VALUE "FileVersion", "1.3.0.0"
VALUE "FileVersion", "1.4.1.0"
VALUE "InternalName", "DynAdjust"
VALUE "LegalCopyright", "Copyright 2025 Geoscience Australia"
VALUE "OriginalFilename", "DynAdjust"
VALUE "ProductName", "DynAdjust"
VALUE "ProductVersion", "1.3.0.0"
VALUE "ProductVersion", "1.4.1.0"
END
END
BLOCK "VarFileInfo"
Expand Down
Loading
Loading