Changeset 7774


Ignore:
Timestamp:
02/05/19 23:30:26 (2 weeks ago)
Author:
baker
Message:

simplify and standardize, use for recursion (pass nmake MAKEFLAGS), eliminate Windows helper programs

Location:
trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/Makefile

    r7656 r7774  
    4444# 
    4545 
    46 # 
    47 # If a new subfolder is created, it should be added to the  
    48 #  list of SUBFOLDERs 
    49 # 
     46# Note: Neither Sun make nor Microsoft nmake support the GNU gmake .PHONY 
     47# pseudo-target.  Makefiles should use a phony target (the name does not matter) 
     48# with no dependencies and no rules, then add the phony dependency to force a 
     49# recipe to run.  This means there can never be a file with the phony target 
     50# name (case insensitive).  Earthworm makefiles use PHONY for this purpose. 
     51 
     52# Note: Windows nmake does not pass $(MAKEFLAGS) as part of $(MAKE) for 
     53# recursive makes; use $(MAKE) /$(MAKEFLAGS). 
     54 
     55# 
     56# If a new subfolder is created, it should be added to the list of SUBFOLDERs 
     57# 
     58 
    5059SUBFOLDERS = \ 
    5160        archiving \ 
    5261        data_exchange \ 
     62        data_sources \ 
    5363        diagnostic_tools \ 
    5464        display \ 
     
    5666        reporting \ 
    5767        seismic_processing \ 
    58         system_control \ 
    59         data_sources  
    60  
    61  
    62 usage:: FRC 
     68        system_control 
     69 
     70 
     71# There is no default target; print usage info 
     72usage: PHONY 
    6373        @echo "Usage: make unix or make solaris or nmake nt" 
    64 # 
    65 #  Top level directives 
    66 # 
    67 solaris: sol_buildinfo sol_libs sol_modules 
    68 unix: unix_buildinfo unix_libs unix_modules 
    69 nt: nt_buildinfo nt_libs nt_modules 
    70  
    71 # 
    72 #  Solaris directives 
    73 # 
    74 sol_buildinfo:: FRC 
    75         cd diagnostic_tools/buildinfo; \ 
    76         make -f makefile.unix clean; \ 
    77         make -f makefile.unix clean_bin; \ 
    78         make -f makefile.unix 
     74 
     75# 
     76#  Top level targets 
     77# 
     78solaris: sol_buildinfo  sol_libs  sol_modules 
     79unix:    unix_buildinfo unix_libs unix_modules 
     80nt:      nt_buildinfo   nt_libs   nt_modules 
     81 
     82#################### 
     83#  Solaris targets # 
     84#################### 
     85 
     86sol_buildinfo: BUILDINFO_MESSAGE 
     87        cd diagnostic_tools/buildinfo ; \ 
     88                $(MAKE) -f makefile.unix clean ; \ 
     89                $(MAKE) -f makefile.unix clean_bin ; \ 
     90                $(MAKE) -f makefile.unix 
    7991        buildinfo 
    8092 
    81 sol_libs:: FRC 
    82         echo "Making libraries"; 
    83         @if [ ! "$(PLATFORM)" ]; then echo " set PLATFORM env var to LINUX for GNU systems or SOLARIS for solaris systems"; exit 1; fi 
    84         cd libsrc; make -f makefile.unix; 
    85  
    86 sol_modules:: FRC 
    87         @for x in $(SUBFOLDERS); \ 
    88         do \ 
    89                 (echo ------; cd $$x; echo Making $@ in:; pwd; \ 
    90                 make solaris); \ 
    91         done 
    92  
    93 clean_solaris: 
    94         cd diagnostic_tools/buildinfo; make -f makefile.unix clean 
    95         cd ../lib; echo Cleaning in:; pwd; \ 
    96                 $(RM) *.o *.obj core *% *~; 
    97         cd libsrc; echo Cleaning in:; pwd; \ 
    98                 make -f makefile.unix clean; 
    99         @for x in $(SUBFOLDERS); \ 
    100         do \ 
    101                 (cd $$x; echo Cleaning in:; pwd; \ 
    102                 make clean_solaris); \ 
    103         done 
    104 # no need to break this out, the makefile in libsrc should take care of it 
    105 #       cd libsrc/util; echo Cleaning in:; pwd; \ 
    106 #               make -f makefile.sol clean; 
    107 #       cd libsrc/solaris; echo Cleaning in:; pwd; \ 
    108 #               make -f makefile.sol clean; 
    109 #       cd libsrc/util/gd_lib; echo Cleaning in:; pwd; \ 
    110 #               make -f makefile.sol clean; 
    111 #       cd libsrc/winnt; echo Cleaning in:; pwd; \ 
    112 #               $(RM) *.o *.obj core *% *~; 
    113  
    114 clean_bin_solaris: 
    115         cd diagnostic_tools/buildinfo; make -f makefile.unix clean_bin 
    116         @for x in $(SUBFOLDERS); \ 
    117         do \ 
    118                 (cd $$x; echo Cleaning binaries in:; pwd; \ 
    119                 make clean_bin_solaris); \ 
    120         done 
    121  
    122 # 
    123 #  Unix directives 
    124 # 
    125 unix_buildinfo:: FRC 
    126         cd diagnostic_tools/buildinfo; \ 
    127         make -f makefile.unix clean; \ 
    128         make -f makefile.unix clean_bin; \ 
    129         make -f makefile.unix 
     93sol_libs: CHECK_PLATFORM_SOL MAKING_C_LIBRARIES_MESSAGE 
     94        cd libsrc ; \ 
     95                $(MAKE) -f makefile.unix 
     96 
     97sol_modules: CHECK_PLATFORM_SOL MAKING_MODULES_MESSAGE 
     98        @for x in $(SUBFOLDERS) ; \ 
     99        do  ( \ 
     100                cd $$x ; \ 
     101                        echo ---------- ; \ 
     102                        echo Making $@ in: ; pwd ; \ 
     103                        $(MAKE) solaris \ 
     104        ) ; done 
     105 
     106CHECK_PLATFORM_SOL: PHONY 
     107        @if [ ! "$(PLATFORM)" ] ; then \ 
     108                echo " set PLATFORM env var to SOLARIS for Solaris systems" ; \ 
     109                exit 1 ; \ 
     110        fi 
     111 
     112clean_solaris: PHONY 
     113        -@cd diagnostic_tools/buildinfo ; \ 
     114                echo Cleaning in: ; pwd ; \ 
     115                $(MAKE) -f makefile.unix clean 
     116        -@cd libsrc ; \ 
     117                echo Cleaning in: ; pwd ; \ 
     118                $(MAKE) -f makefile.unix clean 
     119        -@for x in $(SUBFOLDERS) ; \ 
     120        do ( \ 
     121                cd $$x ; \ 
     122                echo Cleaning in: ; pwd ; \ 
     123                $(MAKE) clean_solaris \ 
     124        ) ; done 
     125 
     126clean_bin_solaris: PHONY 
     127        -@cd diagnostic_tools/buildinfo ; \ 
     128                echo Cleaning binaries in: ; pwd ; \ 
     129                $(MAKE) -f makefile.unix clean_bin 
     130        -@for x in $(SUBFOLDERS) ; \ 
     131        do  ( \ 
     132                cd $$x ; \ 
     133                        echo Cleaning binaries in: ; pwd ; \ 
     134                        $(MAKE) clean_bin_solaris \ 
     135        ) ; done 
     136 
     137################################ 
     138#  Unix/Linux/Mac OS X targets # 
     139################################ 
     140 
     141unix_buildinfo: BUILDINFO_MESSAGE 
     142        cd diagnostic_tools/buildinfo ; \ 
     143                $(MAKE) -f makefile.unix clean ; \ 
     144                $(MAKE) -f makefile.unix clean_bin ; \ 
     145                $(MAKE) -f makefile.unix 
    130146        buildinfo 
    131147 
    132 unix_libs:: FRC 
    133         @echo "Making OS-independent libraries"; 
    134         @if [ ! "$(PLATFORM)" ]; then echo " set PLATFORM env var to LINUX for GNU systems or SOLARIS for solaris systems"; exit 1; fi 
    135         cd libsrc; make -f makefile.unix; 
    136  
    137 unix_modules:: FRC 
    138         @for x in $(SUBFOLDERS); \ 
    139         do \ 
    140                 (echo ------; cd $$x; echo Making $@ in:; pwd; \ 
    141                 make unix); \ 
    142         done 
    143  
    144 clean_unix: 
    145         cd diagnostic_tools/buildinfo; make -f makefile.unix clean 
    146         cd ../lib; echo Cleaning in:; pwd; \ 
    147                 $(RM) *.o *.obj core *% *~; 
    148         cd libsrc/; echo Cleaning in; pwd; \ 
    149                 make -f makefile.unix clean; 
    150         cd libsrc/winnt; echo Cleaning in:; pwd; \ 
    151                 $(RM) *.o *.obj core *% *~; 
    152         @for x in $(SUBFOLDERS); \ 
    153         do \ 
    154                 (cd $$x; echo Cleaning in:; pwd; \ 
    155                 make clean_unix); \ 
    156         done 
    157  
    158 clean_bin_unix: 
    159         cd diagnostic_tools/buildinfo; make -f makefile.unix clean_bin 
    160         @for x in $(SUBFOLDERS); \ 
    161         do \ 
    162                 (cd $$x; echo Cleaning binaries in:; pwd; \ 
    163                 make clean_bin_unix); \ 
    164         done 
    165  
    166 # 
    167 #  NT directives 
    168 # 
    169 nt_buildinfo:: FRC 
    170         cd diagnostic_tools\buildinfo 
    171         nmake /NOLOGO /f makefile.nt clean 
    172         nmake /NOLOGO /f makefile.nt clean_bin 
    173         nmake /NOLOGO /f makefile.nt 
    174         cd ..\.. 
     148unix_libs: CHECK_PLATFORM_UNIX MAKING_C_LIBRARIES_MESSAGE 
     149        cd libsrc ; \ 
     150                $(MAKE) -f makefile.unix 
     151 
     152unix_modules: CHECK_PLATFORM_UNIX MAKING_MODULES_MESSAGE 
     153        @for x in $(SUBFOLDERS) ; \ 
     154        do  ( \ 
     155                cd $$x ; \ 
     156                        echo ---------- ; \ 
     157                        echo Making $@ in: ; pwd ; \ 
     158                        $(MAKE) unix \ 
     159        ) ; done 
     160 
     161CHECK_PLATFORM_UNIX: PHONY 
     162        @if [ ! "$(PLATFORM)" ] ; then \ 
     163                echo " set PLATFORM env var to LINUX for GNU or Mac OS X systems" ; \ 
     164                exit 1 ; \ 
     165        fi 
     166 
     167clean_unix: PHONY 
     168        -@cd diagnostic_tools/buildinfo ; \ 
     169                echo Cleaning in: ; pwd ; \ 
     170                $(MAKE) -f makefile.unix clean 
     171        -@cd libsrc ; \ 
     172                echo Cleaning in ; pwd ; \ 
     173                $(MAKE) -f makefile.unix clean 
     174        -@for x in $(SUBFOLDERS) ; \ 
     175        do ( \ 
     176                cd $$x ; \ 
     177                        echo Cleaning in: ; pwd ; \ 
     178                        $(MAKE) clean_unix \ 
     179        ) ; done 
     180 
     181clean_bin_unix: PHONY 
     182        -@cd diagnostic_tools/buildinfo ; \ 
     183                echo Cleaning binaries in: ; pwd ; \ 
     184                $(MAKE) -f makefile.unix clean_bin 
     185        -@for x in $(SUBFOLDERS) ; \ 
     186        do ( \ 
     187                cd $$x ; \ 
     188                        echo Cleaning binaries in: ; pwd ; \ 
     189                        $(MAKE) clean_bin_unix \ 
     190        ) ; done 
     191 
     192#################### 
     193#  Windows targets # 
     194#################### 
     195 
     196nt_buildinfo: BUILDINFO_MESSAGE 
     197        pushd diagnostic_tools\buildinfo & \ 
     198                $(MAKE) /$(MAKEFLAGS) /f makefile.nt clean & \ 
     199                $(MAKE) /$(MAKEFLAGS) /f makefile.nt clean_bin & \ 
     200                $(MAKE) /$(MAKEFLAGS) /f makefile.nt & \ 
     201        popd 
    175202        buildinfo 
    176203 
    177 nt_libs:: FRC 
    178         @echo "Making  C libraries" 
    179         nt_comp libsrc 
    180 #       @echo "Making  C++ libraries" 
    181 #       nt_comp libsrc_cpp 
    182  
    183 nt_modules:: FRC 
    184         @echo "Making Earthworm modules" 
    185         nt_make_tree $(SUBFOLDERS) 
    186  
    187 clean_nt:: FRC 
    188         cd diagnostic_tools\buildinfo 
    189         nmake /NOLOGO /f makefile.nt clean 
    190         cd ..\.. 
    191         @echo Cleaning ..\lib 
    192         cd ..\lib 
    193         -del *.o *.obj core *% *~ 
    194         @echo Cleaning libsrc 
    195         cd ..\src\libsrc 
    196         nmake -f makefile.nt clean_nt 
    197         -del *.o *.obj core *% *~ 
    198         cd .. 
    199         @for %x in ($(SUBFOLDERS)) \ 
    200         do \ 
    201                 @nt_folder %x clean_nt 
    202 #       @echo Cleaning libsrc\util 
    203 #       cd ..\src\libsrc\util 
    204 #       nmake -f makefile.nt clean 
    205 #       @echo Cleaning libsrc\util\gd_lib 
    206 #       cd gd_lib 
    207 #       nmake -f makefile.nt clean 
    208 #       @echo Cleaning libsrc\lib330 
    209 #       cd ..\..\lib330 
    210 #       nmake -f makefile.nt clean 
    211 #       @echo Cleaning libsrc\winnt 
    212 #       cd ..\winnt 
    213 #       nmake -f makefile.nt clean 
    214 #       @echo Cleaning libsrc\solaris 
    215 #       cd ..\solaris 
    216 #       -del *.o *.obj core *% *~                
    217  
    218 clean_bin_nt:: FRC 
    219         cd diagnostic_tools\buildinfo 
    220         nmake /NOLOGO /f makefile.nt clean_bin 
    221         cd ..\.. 
    222         @for %x in ($(SUBFOLDERS)) \ 
    223         do \ 
    224                 @nt_folder %x clean_bin_nt 
    225  
    226 FRC: 
     204#nt_libs: nt_c_libs nt_cpp_libs 
     205nt_libs: nt_c_libs 
     206 
     207nt_c_libs: MAKING_C_LIBRARIES_MESSAGE 
     208        pushd libsrc & \ 
     209                $(MAKE) /$(MAKEFLAGS) /f makefile.nt & \ 
     210        popd 
     211 
     212#nt_cpp_libs: MAKING_CPP_LIBRARIES_MESSAGE 
     213#       pushd libsrc_cpp & \ 
     214#               $(MAKE) /$(MAKEFLAGS) /f makefile.nt & \ 
     215#       popd 
     216 
     217nt_modules: MAKING_MODULES_MESSAGE 
     218        -@for %x in ($(SUBFOLDERS)) \ 
     219        do ( \ 
     220                pushd %x & \ 
     221                        echo ---------- & \ 
     222                        echo Making in: & cd & \ 
     223                        $(MAKE) /$(MAKEFLAGS) nt & \ 
     224                popd \ 
     225        ) 
     226 
     227clean_nt: PHONY 
     228        -@pushd diagnostic_tools\buildinfo & \ 
     229                echo Cleaning in: & cd & \ 
     230                $(MAKE) /$(MAKEFLAGS) /f makefile.nt clean & \ 
     231        popd 
     232        -@pushd libsrc & \ 
     233                echo Cleaning in: & cd & \ 
     234                $(MAKE) /$(MAKEFLAGS) /f makefile.nt clean & \ 
     235        popd 
     236        -@for %x in ($(SUBFOLDERS)) \ 
     237        do ( \ 
     238                pushd %x & \ 
     239                        echo Cleaning in: & cd & \ 
     240                        $(MAKE) /$(MAKEFLAGS) clean_nt & \ 
     241                popd \ 
     242        ) 
     243 
     244clean_bin_nt: PHONY 
     245        -pushd diagnostic_tools\buildinfo & \ 
     246                echo Cleaning binaries in: & cd & \ 
     247                $(MAKE) /$(MAKEFLAGS) /f makefile.nt clean_bin & \ 
     248        popd 
     249        -for %x in ($(SUBFOLDERS)) \ 
     250        do ( \ 
     251                pushd %x & \ 
     252                        echo Cleaning binaries in: & cd & \ 
     253                        $(MAKE) /$(MAKEFLAGS) clean_bin_nt & \ 
     254                popd \ 
     255        ) 
     256 
     257################## 
     258# Helper targets # 
     259################## 
     260 
     261BUILDINFO_MESSAGE: PHONY 
     262        @echo -*-*-*-*-*-*-*-*-*-* 
     263        @echo Earthworm build info 
     264        @echo -*-*-*-*-*-*-*-*-*-* 
     265 
     266MAKING_C_LIBRARIES_MESSAGE: PHONY 
     267        @echo -*-*-*-*-*-*-*-*-* 
     268        @echo Making C libraries 
     269        @echo -*-*-*-*-*-*-*-*-* 
     270 
     271MAKING_CPP_LIBRARIES_MESSAGE: PHONY 
     272        @echo -*-*-*-*-*-*-*-*-*-* 
     273        @echo Making C++ libraries 
     274        @echo -*-*-*-*-*-*-*-*-*-* 
     275 
     276MAKING_MODULES_MESSAGE: PHONY 
     277        @echo -*-*-*-*-*-*-*-*-*-*-*-* 
     278        @echo Making Earthworm modules 
     279        @echo -*-*-*-*-*-*-*-*-*-*-*-* 
     280 
     281PHONY: 
  • trunk/src/libsrc/makefile.nt

    r7760 r7774  
    3232 
    3333# Clean-up rules 
    34 clean_nt: 
     34clean: 
    3535        @echo "Removing EW library objects" 
    3636        -del $(EW_HOME)\$(EW_VERSION)\lib\*.obj 
Note: See TracChangeset for help on using the changeset viewer.