Changeset 2102 for trunk/source/Makefile

Show
Ignore:
Timestamp:
06/05/08 17:08:44 (7 months ago)
Author:
rjrw
Message:

Move Makefile toward flexibility to cope with Windows filesystems and
compilers.


Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/source/Makefile

    r1920 r2102  
    1010LDLIBS= 
    1111SRCDIR=. 
     12OBJEXT=o 
     13LIBEXT=a 
     14 
     15# include a configuration file if one exists (or carry on without 
     16# worrying if it doesn't) 
     17-include Makefile.conf 
    1218 
    1319main := maincl.cpp 
     
    1723libsource := ${filter-out ${main},${source}} 
    1824includes := ${notdir ${wildcard ${SRCDIR}/*.h}} 
    19 objects := ${source:.cpp=.o} 
    20 libobjects := ${libsource:.cpp=.o} 
    21 testobjects := ${testsource:.cpp=.o} 
    22  
    23 # include a configuration file if one exists (or carry on without 
    24 # worrying if it doesn't) 
    25 -include Makefile.conf 
     25objects := ${source:.cpp=.${OBJEXT}} 
     26libobjects := ${libsource:.cpp=.${OBJEXT}} 
     27testobjects := ${testsource:.cpp=.${OBJEXT}} 
    2628 
    2729ifneq (${SRCDIR},.) 
     
    9395CXXFLAGS += -DSVN_REVISION=\"$(REVISION)\" 
    9496 
    95 cloudy.exe : ${preobjects} maincl.o libcloudy.a 
    96         ${CXX} ${LDFLAGS} -o cloudy.exe maincl.o -L. -lcloudy ${LDLIBS} 
     97cloudy.exe : ${preobjects} maincl.${OBJEXT} libcloudy.${LIBEXT} 
     98        ${CXX} ${LDFLAGS} -o cloudy.exe maincl.${OBJEXT} -L. -lcloudy ${LDLIBS} 
    9799 
    98 libcloudy.a: ${libobjects} 
    99         ar ru libcloudy.a ${libobjects} 
    100         ${RANLIB} libcloudy.a 
     100libcloudy.${LIBEXT}: ${libobjects} 
     101        ar ru libcloudy.${LIBEXT} ${libobjects} 
     102        ${RANLIB} libcloudy.${LIBEXT} 
    101103 
    102104clean : 
    103         rm -f *.o 
     105        rm -f *.${OBJEXT} 
    104106        rm -f *.h.gch 
    105107        rm -rf SunWS_cache 
    106         rm -f libcloudy.a 
     108        rm -f libcloudy.${LIBEXT} 
    107109        rm -f cloudy.exe 
    108110        rm -f runtests.exe 
    109111 
    110112distclean : 
    111         rm -f *.o 
     113        rm -f *.${OBJEXT} 
    112114        rm -f *.h.gch 
    113115        rm -rf SunWS_cache 
    114         rm -f libcloudy.a 
     116        rm -f libcloudy.${LIBEXT} 
    115117        rm -f cloudy.exe 
    116118        rm -f runtests.exe 
     
    125127        @echo "Updating dependency file, this may take a little while" 
    126128        @cd ${SRCDIR}; \ 
    127         ${CXXDEPEND} -MM -DMM ${CXXDEFINES} ${source} | sed "s/${presource}/${substname}/" > $(PWD)/Makefile.dep; \ 
    128         ${CXXDEPEND} -MM -DMM ${CXXDEFINES} ${testsource} | sed "s/${presource}/${substname}/" >> $(PWD)/Makefile.dep; \ 
    129         ${CXXDEPEND} -MM -DMM ${CXXDEFINES} ${presource} | sed 's/\.o:/.h.gch:/' >> $(PWD)/Makefile.dep; 
     129        ${CXXDEPEND} -MM -DMM ${CXXDEFINES} ${source} | sed "s/${presource}/${substname}/" | sed "s/\.o/.${OBJEXT}/" > "$(PWD)/Makefile.dep"; \ 
     130        ${CXXDEPEND} -MM -DMM ${CXXDEFINES} ${testsource} | sed "s/${presource}/${substname}/" | sed "s/\.o/.${OBJEXT}/" >> "$(PWD)/Makefile.dep"; \ 
     131        ${CXXDEPEND} -MM -DMM ${CXXDEFINES} ${presource} | sed 's/\.o:/.h.gch:/' >> "$(PWD)/Makefile.dep"; 
    130132 
    131 cpu.o: 
     133cpu.${OBJEXT}: 
    132134        ${CXX} ${CXXFLAGS} -c -DCLOUDY_DATA_PATH=\"${CDP}\" $< 
    133135 
    134136# an explicit -O0 is needed for some compilers like icc 
    135 parse_crashdo.o: 
     137parse_crashdo.${OBJEXT}: 
    136138        ${CXX} ${CXXFLAGSNOOPT} -O0 -c $< 
    137139 
     
    145147        valgrind --leak-check=full --track-fds=yes ./runtests.exe 
    146148 
    147 runtests.exe: ${testobjects} libcloudy.a 
    148         ${CXX} ${CXXFLAGS} -o $@ ${filter-out %.a, $^} \ 
     149runtests.exe: ${testobjects} libcloudy.${LIBEXT} 
     150        ${CXX} ${CXXFLAGS} -${OBJEXT} $@ ${filter-out %.${LIBEXT}, $^} \ 
    149151        ${LDFLAGS} -L. -lcloudy -Llib -lUnitTest++ ${LDLIBS} 
    150152 
    151153${testobjects}: CXXFLAGS += -I${SRCDIR}/include/UnitTest++ 
    152154 
    153 ${testobjects}: lib/libUnitTest++.a 
     155${testobjects}: lib/libUnitTest++.${LIBEXT} 
    154156 
    155 lib/libUnitTest++.a: 
     157lib/libUnitTest++.${LIBEXT}: 
    156158        cd ${SRCDIR}/../library/UnitTest++; \ 
    157159        $(MAKE) clean; $(MAKE) CC=${CXX} CCFLAGS="${CXXFLAGS}"; \ 
     
    161163        cp src/Win32/*.h ${PWD}/include/UnitTest++/Win32; \ 
    162164        cp src/Posix/*.h ${PWD}/include/UnitTest++/Posix; \ 
    163         cp libUnitTest++.a ${PWD}/lib/ 
     165        cp libUnitTest++.${LIBEXT} ${PWD}/lib/ 
    164166 
    165167# only include Makefile.dep when we really need it, this prevents unnecessary builds of Makefile.dep