Changeset 3836 for trunk/LMDZ.COMMON/makelmdz_fcm
- Timestamp:
- Jul 7, 2025, 2:46:43 PM (7 weeks ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.COMMON/makelmdz_fcm
r3830 r3836 603 603 604 604 # Path and name of the generated file 605 info_file="$LIBFGCM/misc/version_info.F90"606 607 # Path and name of the file containing the difference result608 res_file="pgrm_version_details.txt"605 version_F90file="$LIBFGCM/misc/pgrm_version.F90" 606 607 # Path and name of the file containing the compilation and version details 608 default_out_file="pgrm_version_details.txt" 609 609 610 610 # Get the current date … … 653 653 654 654 # Generate the Fortran subroutine 655 cat << EOF > "$info_file" 655 cat << EOF > "$version_F90file" 656 MODULE pgrm_version_mod 657 656 658 !*********************************************************************** 657 659 ! File generated automatically at compilation 658 660 ! 659 661 ! DESCRIPTION: 660 ! The subroutine 'print_version_info' prints compilation details, the 661 ! version control information (SVN or Git), the status and the diff 662 ! result if applicable. 662 ! The subroutine 'print_pgrm_version' prints compilation details, the version 663 ! control information (SVN or Git), the status and the diff result if applicable. 663 664 ! 664 665 ! PARAMETERS: … … 666 667 ! 667 668 ! USAGE: 668 ! Put the argument 'version' as an option when executing the code to 669 ! display compilation and version details. It is useful for tracking 670 ! code builds through the executable file. 669 ! Use the command-line option "--version [file]" when running your program: 670 ! ./myprogram --version [file] 671 ! This will write compilation and version details into the specified [file]. 672 ! If [file] is omitted, the default name "pgrm_version_details.txt" will be used. 673 ! This feature helps track code builds and their exact compilation context 674 ! directly from the executable. 671 675 !*********************************************************************** 672 676 673 MODULE version_info_mod 677 implicit none 678 679 character(*), parameter :: default_out_file = "${default_out_file}" 674 680 675 681 !======================================================================= … … 677 683 !======================================================================= 678 684 679 SUBROUTINE print_version_info() 680 681 integer, parameter :: io_unit = 10 682 683 open(io_unit, file = '${res_file}',status = 'replace',action = 'write') 684 685 write(*,'(a)') '-> Writing compilation details to the file "${res_file}".' 685 SUBROUTINE print_pgrm_version(user_out_file) 686 687 !---- Arguments 688 character(*), optional, intent(in) :: user_out_file 689 690 !---- Variables 691 integer, parameter :: io_unit = 10 692 character(:), allocatable :: out_file 693 694 !---- Code 695 if (present(user_out_file)) then 696 out_file = trim(adjustl(user_out_file)) 697 else 698 out_file = trim(adjustl(default_out_file)) 699 endif 700 701 open(io_unit,file = out_file,status = 'replace',action = 'write') 702 703 write(*,*) 704 write(*,'(a)') '-> Writing compilation details to the file "'//out_file//'".' 686 705 write(io_unit,'(a)') '========================= COMPILATION DETAILS ==========================' 687 write(io_unit,'(a)') '-> Date : ${current_date}'706 write(io_unit,'(a)') '-> Date : ${current_date}' 688 707 write(io_unit,'(a)') '-> Command: ${compilation_command}' 689 708 write(io_unit,*) … … 691 710 692 711 if [ -n "$vcs_info" ]; then 693 echo "write(*,'(a)') '-> Writing information result to the file \" ${res_file}\".'" >> "$info_file"694 echo "write(io_unit,'(a)') '===================== VERSION CONTROL INFORMATION ======================'" >> "$ info_file"712 echo "write(*,'(a)') '-> Writing information result to the file \"'//out_file//'\".'" >> "$version_F90file" 713 echo "write(io_unit,'(a)') '===================== VERSION CONTROL INFORMATION ======================'" >> "$version_F90file" 695 714 while IFS= read -r line; do 696 echo "write(io_unit,'(a)') '${line}'" >> "$ info_file"715 echo "write(io_unit,'(a)') '${line}'" >> "$version_F90file" 697 716 done <<< "$(echo -e "$vcs_info")" 698 717 else 699 echo "write(io_unit,'(a)') '====================== NO VERSION CONTROL SYSTEM ======================='" >> "$ info_file"718 echo "write(io_unit,'(a)') '====================== NO VERSION CONTROL SYSTEM ======================='" >> "$version_F90file" 700 719 fi 701 720 702 721 if [ -n "$vcs_stat" ]; then 703 echo "write(*,'(a)') '-> Writing status result to the file \" ${res_file}\".'" >> "$info_file"704 echo "write(io_unit,*)" >> "$ info_file"705 echo "write(io_unit,'(a)') '======================== VERSION CONTROL STATUS ========================'" >> "$ info_file"722 echo "write(*,'(a)') '-> Writing status result to the file \"'//out_file//'\".'" >> "$version_F90file" 723 echo "write(io_unit,*)" >> "$version_F90file" 724 echo "write(io_unit,'(a)') '======================== VERSION CONTROL STATUS ========================'" >> "$version_F90file" 706 725 while IFS= read -r line; do 707 echo "write(io_unit,'(a)') '${line}'" >> "$ info_file"726 echo "write(io_unit,'(a)') '${line}'" >> "$version_F90file" 708 727 done <<< "$(echo -e "$vcs_stat")" 709 728 fi 710 729 711 730 if [ -n "$vcs_diff" ]; then 712 echo "write(*,'(a)') '-> Writing diff result to the file \" ${res_file}\".'" >> "$info_file"713 echo "write(io_unit,*)" >> "$ info_file"714 echo "write(io_unit,'(a)') '========================= VERSION CONTROL DIFF ========================='" >> "$ info_file"731 echo "write(*,'(a)') '-> Writing diff result to the file \"'//out_file//'\".'" >> "$version_F90file" 732 echo "write(io_unit,*)" >> "$version_F90file" 733 echo "write(io_unit,'(a)') '========================= VERSION CONTROL DIFF ========================='" >> "$version_F90file" 715 734 while IFS= read -r line; do 716 echo "write(io_unit,'(a)') '${line}'" >> "$ info_file"735 echo "write(io_unit,'(a)') '${line}'" >> "$version_F90file" 717 736 done <<< "$(echo -e "$vcs_diff")" 718 737 fi 719 738 720 cat << EOF >> "$ info_file"739 cat << EOF >> "$version_F90file" 721 740 write(io_unit,'(a)') '========================================================================' 741 write(*,*) 722 742 723 743 close(io_unit) 724 744 725 END SUBROUTINE print_ version_info726 727 END MODULE version_info_mod745 END SUBROUTINE print_pgrm_version 746 747 END MODULE pgrm_version_mod 728 748 EOF 729 749 730 750 # Termination message 731 echo "'$ info_file' has been generated successfully."751 echo "'$version_F90file' has been generated successfully." 732 752 733 753
Note: See TracChangeset
for help on using the changeset viewer.