source: git/kernel/Makefile.in @ 08ecff

spielwiese
Last change on this file since 08ecff was 08ecff, checked in by Hans Schönemann <hannes@…>, 20 years ago
*hannes: Make git-svn-id: file:///usr/local/Singular/svn/trunk@6920 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 22.5 KB
Line 
1#################################################################
2###
3### Makefile for Singular
4###
5#################################################################
6
7SHELL           = /bin/sh
8
9##
10## version
11##
12SINGULAR_VERSION        = @SINGULAR_VERSION@
13SINGULAR                = @SINGULAR@
14SINGUNAME               = @SINGUNAME@
15EXEC_EXT                = @EXEC_EXT@
16##
17## various paths
18##
19srcdir          = @srcdir@
20prefix          = @prefix@
21exec_prefix     = @exec_prefix@
22libdir          = @libdir@
23# program executable goes here
24bindir          = @bindir@
25# includes are taken from here
26includedir      = @includedir@
27slibdir         = ${prefix}/LIB
28install_bindir  = ${install_prefix}/${SINGUNAME}
29install_slibdir = ${install_prefix}/LIB
30
31##
32## various programs
33##
34@SET_MAKE@
35CC              = @CC@
36LD              = @LD@
37CXX             = @CXX@
38LEX             = @LEX@
39PERL            = @PERL@
40BISON           = bison
41INSTALL         = @INSTALL@
42INSTALL_PROGRAM = @INSTALL_PROGRAM@
43INSTALL_DATA    = @INSTALL_DATA@
44MKINSTALLDIRS   = ./mkinstalldirs
45LN_S            = @LN_S@
46
47##
48## compiler and linker options
49##
50PIPE            = @PIPE@
51CFLAGS          = @CFLAGS@ ${PIPE}
52CXXFLAGS        = @CXXFLAGS@ ${PIPE}
53CXXTEMPLFLAGS   = @CXXTEMPLFLAGS@
54CPPFLAGS        = -I${srcdir} @CPPFLAGS@
55DEFS            = -DNDEBUG -DOM_NDEBUG -D@SING_UNAME@ @DEFS@
56LDFLAGS         = @LDFLAGS@
57LD_DYN_FLAGS    = @LD_DYN_FLAGS@
58SFLAGS          = @SFLAGS@
59SLDFLAGS        = @SLDFLAGS@
60
61LD_LIBC         = -lc
62STATIC_LDFLAGS  = @STATIC_LDFLAGS@
63# under cygwin, do not explicitly link against -lm, for it is the cygwin
64# lib -- if you really want to do this, use -lm as the _last_ thing on the
65# arguments to link
66ifneq ($(SINGUNAME),ix86-Win)
67LIBS            = -lm @NEED_LIBS@
68else
69# for the 2-0-* versions under Windows, we don't need gdbm, readline and ncurses
70LIBS            = -lsingfac -lsingcf -lntl -lgmp -lreadline -lncurses
71#LIBS           = -lsingfac -lsingcf -lgmp
72endif
73MP_LIBS         = @MP_LIBS@
74DL_KERNEL       = @DL_KERNEL@
75
76ifdef LD_STATIC
77LDFLAGS  := ${STATIC_LDFLAGS} ${LDFLAGS}
78SING_EXEC = Singular-static
79LIBS := ${MP_LIBS} ${LIBS}
80DL_KERNEL =
81else
82LDFLAGS  := ${LD_DYN_FLAGS} ${LDFLAGS}
83SING_EXEC = Singular
84endif
85
86# CXXFLAGS =  -g -Wall -Wno-unused
87# CFLAGS =  -g -Wall -Wno-unused
88##
89## End configuration dependend stuff
90#################################################################
91
92###
93### file sets
94###
95
96# normal C++ source files
97CXXSOURCES=algmap.cc clapconv.cc \
98    clapsing.cc mminit.cc\
99    febase.cc feread.cc fehelp.cc feResource.cc feOpt.cc \
100    ffields.cc hdegree.cc hilb.cc hutil.cc \
101    gring.cc gr_kstd2.cc\
102    ideals.cc intvec.cc \
103    khstd.cc kstdfac.cc \
104    kstd1.cc kstd2.cc kutil.cc \
105    longalg.cc longrat.cc longrat0.cc \
106    maps.cc matpol.cc misc.cc gnumpfl.cc gnumpc.cc \
107    modulop.cc mpr_complex.cc sparsmat.cc \
108    fglm.cc fglmzero.cc fglmvec.cc fglmgauss.cc fglmhom.cc fglmcomb.cc \
109    numbers.cc polys.cc p_polys.cc polys0.cc polys1.cc polys-impl.cc \
110    ring.cc shortfl.cc kspoly.cc \
111    syz.cc syz0.cc syz1.cc syz2.cc syz3.cc\
112    timer.cc walk.cc weight.cc \
113    GMPrat.cc multicnt.cc npolygon.cc semic.cc spectrum.cc splist.cc \
114    mod_raw.cc sing_win.cc\
115    eigenval.cc pcv.cc units.cc kbuckets.cc sbuckets.cc\
116    mpr_inout.cc mpr_base.cc mpr_numeric.cc \
117    prCopy.cc p_Mult_q.cc \
118    pDebug.cc pInline2.cc pInline1.cc pInline0.cc \
119    pShallowCopyDelete.cc
120
121# stuff for dbm
122DBMSR_SOURCES =  ndbm.cc sing_dbm.cc
123
124# normal C source files
125CSOURCES=weight0.c fegetopt.c fereadl.c page.c dError.c mmstd.c
126
127# C++ sources which are used if part of the kernel are dynamically linked
128DL_KERNEL_SOURCES=p_Procs_Dynamic.cc slInit_Dynamic.cc
129
130# C++ sources which are used for dynamic libraries if part of the kernel is
131# dynamically linked
132DL_LIB_SOURCES=p_Procs_Lib.cc
133
134# C++ sources which are used if no parts of the kernel are dynamically linked
135STATIC_SOURCES=p_Procs_Static.cc slInit_Static.cc
136
137# C++ sources for which both, shared and static object files are needed
138COMMON_SOURCES = $(DBMSR_SOURCES)
139
140# special C++ source files (need extra compiling and/or linking), for which
141# dependencies should be generated
142ESOURCES=mmalloc.cc $(COMMON_SOURCES) \
143        $(DL_KERNEL_SOURCES) $(DL_LIB_SOURCES) $(STATIC_SOURCES)
144
145SOURCES=${CSOURCES} ${CXXSOURCES} \
146        syz2.cc prCopyTemplate.cc \
147        p_Delete__T.cc p_ShallowCopyDelete__T.cc \
148        p_Copy__T.cc p_Mult_nn__T.cc  pp_Mult_nn__T.cc \
149        pp_Mult_mm__T.cc p_Mult_mm__T.cc \
150        p_Minus_mm_Mult_qq__T.cc p_Add_q__T.cc \
151        p_Neg__T.cc pp_Mult_Coeff_mm_DivSelect__T.cc \
152        pp_Mult_Coeff_mm_DivSelectMult__T.cc \
153        p_Merge_q__T.cc pp_Mult_mm_Noether__T.cc\
154        p_kBucketSetLm__T.cc \
155        kInline.cc \
156        claptmpl.cc
157
158HEADERS=algmap.h hutil.h stairc.h ideals.h \
159        longalg.h structs.h intvec.h longrat.h \
160        numbers.h stype.h clapconv.h maps.h page.h \
161        clapsing.h matpol.h polys.h p_polys.h syz.h \
162        cntrlc.h ring.h timer.h sdb.h dError.h \
163        febase.h shortfl.h mpr_complex.h mpr_global.h \
164        page.h gring.h \
165        ffields.h khstd.h silink.h sparsmat.h gnumpfl.h gnumpc.h \
166        fglm.h kstd1.h modulop.h sing_dbm.h weight.h \
167        fglmgauss.h fglmvec.h \
168        kstdfac.h kmatrix.h\
169        kutil.h \
170        ndbm.h dbm_sl.h polys-impl.h \
171        GMPrat.h multicnt.h npolygon.h semic.h spectrum.h splist.h multicnt.h \
172        eigenval.h units.h mod_raw.h kbuckets.h sbuckets.h\
173        mpr_global.h mpr_inout.h mpr_base.h mpr_numeric.h \
174        feOpt.h fegetopt.h distrib.h walk.h \
175        prCopy.h prCopyMacros.h \
176        p_MemAdd.h p_MemCopy.h p_MemCmp.h p_Numbers.h \
177        pInline2.h pInline1.h pInline0.h mmalloc.h static.h\
178        omSingularConfig.h pShallowCopyDelete.h \
179        p_Procs_Dynamic.h p_Procs_Impl.h p_Procs_Set.h \
180        p_Procs.h p_Procs_Static.h p_Mult_q.h
181
182DISTFILES=${SOURCES} ${HEADERS} ${ESOURCES} \
183        Makefile.in configure.in configure \
184        mod2.h.in grammar.h testgh install-sh mkinstalldirs \
185        check_aso.pl prCopy.pl
186
187OBJS := $(CXXSOURCES:.cc=.o) $(CSOURCES:.c=.o)
188
189ifeq ($(SINGUNAME),ix86-Win)
190OBJS := $(OBJS) Singular_res.o
191endif
192
193P_PROCS_MODULES = FieldZp FieldIndep FieldQ FieldGeneral
194
195ifeq ($(DL_KERNEL),1)
196OBJS    := $(OBJS) $(DL_KERNEL_SOURCES:.cc=.o)
197DBMSR_SO= dbmsr.so
198DL_LIBS := $(P_PROCS_MODULES:%=p_Procs_%.so) $(DBMSR_SO)
199else
200ifndef LD_STATIC
201LIBS := $(MP_LIBS) $(LIBS)
202endif
203OBJS := $(OBJS) $(STATIC_SOURCES:.cc=.o) $(COMMON_SOURCES:.cc=.o)
204DL_LIBS=
205endif
206
207#
208# Singular libraries which go into distribution
209# MAKE SURE THAT THIS IS UP_TO_DATE
210#
211SLIBS = COPYING \
212        ainvar.lib   algebra.lib   all.lib       brnoeth.lib    classify.lib \
213        deform.lib   elim.lib      equising.lib  finvar.lib     gaussman.lib \
214        general.lib  graphics.lib  groups.lib    hnoether.lib   homolog.lib  \
215        inout.lib    intprog.lib   latex.lib     linalg.lib     makedbm.lib  \
216        matrix.lib   mondromy.lib  mprimdec.lib \
217        mregular.lib normal.lib    ntsolve.lib   paramet.lib \
218        poly.lib     presolve.lib  primdec.lib   primitiv.lib   qhmoduli.lib \
219        random.lib   reesclos.lib  ring.lib      rinvar.lib     sing.lib \
220        solve.lib    spcurve.lib   spectrum.lib  standard.lib   stratify.lib \
221        surf.lib     teachstd.lib  template.lib  toric.lib      triang.lib \
222        weierst.lib  zeroset.lib   help.cnf
223
224SLIBS_FILES = $(addprefix LIB/,${SLIBS})
225
226GFTABLES = $(wildcard LIB/gftables/[1-9]*)
227
228##
229## Build Targets
230##
231.cc.o: 
232        ${CXX} ${CXXFLAGS} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFS} -c $<
233.c.o:
234        ${CC} ${CFLAGS} ${CPPFLAGS} ${DEFS} -c $<
235
236# building objects for shared libraries
237p_Procs_Lib_%.dl_o : p_Procs_Lib.cc p_Procs_Dynamic.o
238        ${CXX} ${CXXFLAGS} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFS} ${SFLAGS} -Dp_Procs_$* -c $< -o $@
239
240%.dl_o : %.cc
241        ${CXX} ${CXXFLAGS} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFS} ${SFLAGS} -c $< -o $@
242
243
244all:    $(SING_EXEC)
245
246Singular-static: version.h
247        sleep 1
248        echo "#define HAVE_STATIC" > static.h
249        ${MAKE} LD_STATIC=1 S_EXT="-static" Singular-static
250        echo "#undef HAVE_STATIC" > static.h
251
252Singular${S_EXT}: mod2.h Makefile version.h ${OBJS} mmalloc.o \
253          tesths.cc claptmpl.o $(DL_LIBS)
254        ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${CXXTEMPLFLAGS} ${DEFS} \
255          -o Singular${S_EXT} \
256          tesths.cc claptmpl.o\
257          ${OBJS} ${LDFLAGS} ${LIBS} -lomalloc_ndebug mmalloc.o
258
259%.static: version.h
260        ${MAKE} DL_KERNEL=0 S_EXT=".static" $@
261
262cntrlc.o cntrlc.og : feOptES.inc feOptTS.inc feOpt.inc
263
264p_Procs_Lib.o: p_Procs_Lib.inc
265
266claptmpl.o: claptmpl.cc mod2.h
267        ${CXX} ${CXXFLAGS}  ${CPPFLAGS} ${DEFS} -c $<   
268
269version.h: ${SOURCES} ${HEADERS} Makefile.in mod2.h.in \
270           configure.in
271        echo "#define feVersionId "  `date '+%Y%m%d%H'` >version.h
272
273# Hmm compiling with -fomit-frame-pointer resulted in access violation
274# under cygwin
275ESingular: fegetopt.o feResource.cc mod2.h feOpt.cc version.h emacs.cc \
276           feOptES.inc mmalloc.o
277        ${CXX} -O2 ${CPPFLAGS} ${DEFS} -DESINGULAR -o ESingular emacs.cc fegetopt.o \
278        ${LDFLAGS} -lomalloc_ndebug mmalloc.o
279
280TSingular: fegetopt.o feResource.cc mod2.h feOpt.cc version.h emacs.cc \
281           feOptTS.inc mmalloc.o
282        ${CXX} -O2 ${CPPFLAGS} ${DEFS} -DTSINGULAR -o TSingular emacs.cc fegetopt.o \
283        ${LDFLAGS}  -lomalloc_ndebug mmalloc.o
284
285feOpt.o: feOpt.inc feOptES.inc feOptTS.inc
286
287feOpt.inc: feOpt.cc mod2.h feOpt.h
288        $(CXX) ${CPPFLAGS} -DGENERATE_OPTION_INDEX feOpt.cc -o feOpt
289        ./feOpt
290        /bin/rm -f feOpt feOpt.exe
291
292feOptES.inc: feOpt.cc mod2.h feOpt.h
293        $(CXX) ${CPPFLAGS} -DGENERATE_OPTION_INDEX  -DESINGULAR feOpt.cc -o feOpt
294        ./feOpt
295        rm -f feOpt feOpt.exe
296
297feOptTS.inc: feOpt.cc mod2.h feOpt.h
298        $(CXX) ${CPPFLAGS} -DGENERATE_OPTION_INDEX  -DTSINGULAR feOpt.cc -o feOpt
299        ./feOpt
300        rm -f feOpt feOpt.exe
301
302prCopy.o: prCopy.inc
303
304prCopy.inc : prCopyMacros.h prCopyTemplate.cc prCopy.pl
305        $(PERL) prCopy.pl > prCopy.inc
306
307# additional dependencies for p_Procs_[Static|Dynamic|Lib].cc
308p_Procs_Static.o: p_Procs_Static.inc
309p_Procs_Static.inc: p_Procs_Static.h
310p_Procs_Dynamic.o p_Procs_Lib.o: p_Procs_Dynamic.inc
311p_Procs_Dynamic.inc p_Procs_Lib.inc: p_Procs_Dynamic.h
312
313# here is how p_Procs_[Static|Dynamic].inc is generated
314p_Procs_%.inc: p_Procs_Generate.cc p_Procs_Impl.h mod2.h
315        $(CXX) -g -Wall -Dp_Procs_$* p_Procs_Generate.cc -o p_Procs_$*
316        ./p_Procs_$* > p_Procs_$*.inc
317        -rm -f p_Procs_$* p_Procs_$*.exe
318
319p_Procs_%.so: p_Procs_Lib_%.dl_o
320        $(LD) ${SLDFLAGS} -o $@ $^
321
322dbmsr.so: $(DBMSR_SOURCES:.cc=.dl_o)
323        $(LD) ${SLDFLAGS} -o $@ $^
324
325mod2.h: stamp-h
326
327stamp-h : ../Singular/config.status mod2.h.in
328        CONFIG_FILES= CONFIG_HEADERS="mod2.h" ../Singular/config.status
329
330Makefile: Makefile.in ../Singular/config.status
331        CONFIG_FILES="Makefile" CONFIG_HEADERS= ./../Singular/config.status
332
333ifeq ($(SINGUNAME),ix86-Win)
334##
335## windows only targets
336##
337
338ESingular_res.o: Singular.rc
339        windres -DESINGULAR -i Singular.rc -o ESingular_res.o
340
341TSingular_res.o: Singular.rc
342        windres -DTSINGULAR -i Singular.rc -o TSingular_res.o
343
344Singular_res.o: Singular.rc
345        windres -DSINGULAR -i Singular.rc -o Singular_res.o
346
347## run
348run.o: run.c run.h
349        gcc -c -I. -O2 run.c -o run.o
350
351runTSingular : run.o TSingular_res.o
352        gcc -mwindows -e _mainCRTStartup run.o TSingular_res.o -o runTSingular.exe
353
354runESingular : run.o ESingular_res.o
355        gcc -mwindows -e _mainCRTStartup run.o ESingular_res.o -o runESingular.exe
356
357RUN_SINGULARS=runESingular runTSingular
358
359endif
360
361##
362## install targets
363##
364install: all installbin installslib
365
366installbin: ${SING_EXEC} ${RUN_SINGULARS}
367        ${MKINSTALLDIRS} ${bindir}
368        ${INSTALL_PROGRAM} ${SING_EXEC} ${SINGULAR}
369        ${INSTALL_PROGRAM} ${RUN_SINGULARS} ${bindir}
370        ${INSTALL_PROGRAM} ESingular TSingular ${DL_LIBS} ${bindir}
371        chmod a+x ${SINGULAR}${EXEC_EXT}
372        rm -f ${bindir}/${SING_EXEC}${EXEC_EXT}
373        cd ${bindir}; ${LN_S} ${SINGULAR} Singular${EXEC_EXT};
374
375installslib: LIB
376        test -r ${slibdir} || ${LN_S} `pwd`/LIB ${slibdir}
377
378
379uninstall: uninstallbin
380
381uninstallbin:
382        rm -f ${bindir}/Singular${EXEC_EXT}
383        rm -f ${SINGULAR}
384        -rmdir ${bindir}
385
386##
387## clean targest
388##
389mostlyclean:
390        -rm -f Singular Singular-static Singulara Singularg Singularp Singularb feOpt*.inc p_Procs_*.inc
391        -rm -f *.o *.og core *.op *.ob *.ot Singulart *.od *_d.cc *_d.c p_Procs *.oa *.dl_o* *.so*
392        -rm -f ESingular* TSingular*
393
394clean: mostlyclean
395        -rm -f *.bak *.d *.dd depend
396        -rm -f ${slibdir}
397
398distclean: clean
399        -rm -f stamp.h
400        -rm -f Singular* *.gprof *.bprof *~ .\#* version.h
401        -rm -f mod2.h Makefile TAGS* tags
402
403maintainer-clean: distclean srcclean
404        @echo "This command is intended for maintainers to use;"
405        @echo "Rebuilding the deleted files requires flex"
406        @echo "bison, perl and autoconf"
407        -rm configure
408
409##
410## miscellanous targets
411##
412
413install-bindist: $(HEADERS) $(SOURCES) Makefile depend
414        echo "#define MAKE_DISTRIBUTION " > distrib.h
415        sleep 1
416        ${MAKE} ${SING_EXEC} ${RUN_SINGULARS}
417        ${MKINSTALLDIRS} ${install_bindir}
418        ${INSTALL_PROGRAM} -s  ${SING_EXEC} ${install_bindir}/Singular
419        ${INSTALL_PROGRAM} -s  ${RUN_SINGULARS} ESingular TSingular ${DL_LIBS} ${install_bindir}
420        echo "#undef MAKE_DISTRIBUTION " > distrib.h
421
422install-sharedist: ${SLIBS_FILES} LIB/gftables
423        ${MKINSTALLDIRS} ${install_slibdir}
424        cp ${SLIBS_FILES} ${install_slibdir}
425        ${MKINSTALLDIRS} ${install_slibdir}/gftables
426        cp ${GFTABLES} ${install_slibdir}/gftables
427        chmod -R +rX ${install_slibdir}/*
428
429tar:
430        tar cf Singular-${SINGULAR_VERSION}-src.tar ${DISTFILES}
431        gzip -f Singular-${SINGULAR_VERSION}-src.tar
432
433backup: tar
434        mcopy -o Singular-${SINGULAR_VERSION}-src.tar.gz a:
435
436TAGS:   ${SOURCES} ${ESOURCES} ${HEADERS}
437        etags ${SOURCES} ${ESOURCES} ${HEADERS}
438
439tags:   
440        ctags *.y *.l *.c *.h *.cc *.inc
441
442echoLIBS:
443        @echo ${SLIBS}
444
445##
446## Below here is stuff for developpers
447#################################################################
448
449
450##
451## .og files for having -O and -g object versions available at the same time
452##
453
454OBJG1 := $(CXXSOURCES:.cc=.og)
455OBJG2 := $(CSOURCES:.c=.og)
456
457OBJP1 := $(CXXSOURCES:.cc=.op)
458OBJP2 := $(CSOURCES:.c=.op)
459
460OBJB1 := $(CXXSOURCES:.cc=.ob)
461OBJB2 := $(CSOURCES:.c=.ob)
462
463OBJT1 := $(CXXSOURCES:.cc=.ot)
464OBJT2 := $(CSOURCES:.c=.ot)
465
466OBJA1 := $(CXXSOURCES:.cc=.oa)
467OBJA2 := $(CSOURCES:.c=.oa)
468
469
470OBJG=$(OBJG1) $(OBJG2)
471OBJP=$(OBJP1) $(OBJP2)
472OBJB=$(OBJB1) $(OBJB2)
473OBJT=$(OBJT1) $(OBJT2)
474OBJA=$(OBJA1) $(OBJA2)
475
476DL_TAILG=\"sog\"
477DL_TAILP=\"sop\"
478DL_TAILB=\"sob\"
479DL_TAILT=\"sot\"
480DL_TAILA=\"soa\"
481
482
483ifeq ($(DL_KERNEL),1)
484
485OBJG := $(OBJG) $(DL_KERNEL_SOURCES:.cc=.og)
486DL_LIBSG := $(P_PROCS_MODULES:%=p_Procs_%.sog) $(DBMSR_SO:%.so=%.sog)
487
488OBJP := $(OBJP) $(DL_KERNEL_SOURCES:.cc=.op)
489DL_LIBSP := $(P_PROCS_MODULES:%=p_Procs_%.sop) $(DBMSR_SO:%.so=%.sop)
490
491OBJB := $(OBJB) $(DL_KERNEL_SOURCES:.cc=.ob)
492DL_LIBSB := $(P_PROCS_MODULES:%=p_Procs_%.sob) $(DBMSR_SO:%.so=%.sob)
493
494OBJT := $(OBJT) $(DL_KERNEL_SOURCES:.cc=.ot)
495DL_LIBST := $(P_PROCS_MODULES:%=p_Procs_%.sot) $(DBMSR_SO:%.so=%.sot)
496
497OBJA := $(OBJA) $(DL_KERNEL_SOURCES:.cc=.oa)
498DL_LIBSA := $(P_PROCS_MODULES:%=p_Procs_%.soa) $(DBMSR_SO:%.so=%.soa)
499
500else
501
502OBJG := $(OBJG) $(STATIC_SOURCES:.cc=.og) $(COMMON_SOURCES:.cc=.og)
503DL_LIBSG=
504
505OBJP := $(OBJP) $(STATIC_SOURCES:.cc=.op) $(COMMON_SOURCES:.cc=.op)
506DL_LIBSP=
507
508OBJB := $(OBJB) $(STATIC_SOURCES:.cc=.ob) $(COMMON_SOURCES:.cc=.ob)
509DL_LIBSB=
510
511OBJT := $(OBJT) $(STATIC_SOURCES:.cc=.ot) $(COMMON_SOURCES:.cc=.ot)
512DL_LIBST=
513
514OBJA := $(OBJA) $(STATIC_SOURCES:.cc=.oa) $(COMMON_SOURCES:.cc=.oa)
515DL_LIBST=
516
517endif
518
519
520##
521## compiler and linker options for debug version
522##
523
524CCG             = gcc
525CXXG            = gcc
526CXXM            = gcc -MM -MG -DGENERATE_DEPEND
527CCM             = gcc -MM -MG -DGENERATE_DEPEND
528
529CFLAGSG         = -g -Wall -Wno-unused ${PIPE}
530CXXFLAGSG       = -g -Wall -Wno-unused ${PIPE}
531CXXTEMPLFLAGSG  = -fno-implicit-templates
532DEFSG           = -D@SING_UNAME@ @DEFS@ -DDL_TAIL=$(DL_TAILG)
533
534##
535## Debug Targets
536##
537
538p_Procs_%.sog: p_Procs_Lib_%.dl_og
539        ${CXXG} ${CXXFLAGSG} ${SFLAGS} ${SLDFLAGS} $< -o $@
540
541p_Procs_Lib_%.dl_og : p_Procs_Lib.cc  p_Procs_Dynamic.og
542        ${CXXG} ${CXXFLAGSG} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFSG} ${SFLAGS} -Dp_Procs_$* -c $< -o $@
543
544%.dl_og: %.cc
545        ${CXXG} ${CXXFLAGSG} ${CXXTEMPLFLAGSG} ${CPPFLAGS} ${DEFSG} ${SFLAGS} -c $< -o $@
546
547dbmsr.sog: $(DBMSR_SOURCES:.cc=.dl_og)
548        ${CXXG} ${CXXFLAGSG} ${SFLAGS} ${SLDFLAGS} ${LDFLAGS} -o $@ $^ ${MP_LIBS}
549
550claptmpl.og: claptmpl.cc mod2.h
551        $(CXXG)  ${CXXFLAGSG} ${CPPFLAGS} ${DEFSG} -c $< -o $@
552
553%.og: %.cc
554        $(CXXG) ${CXXFLAGSG} ${CXXTEMPLFLAGSG} ${CPPFLAGS} ${DEFSG} -c $< -o $@
555
556$(OBJG2) : %.og: %.c
557        $(CCG)  ${CFLAGSG} ${CPPFLAGS} ${DEFSG} -c $< -o $@
558
559Singularg${S_EXT}: $(OBJG)  mmalloc.og $(DL_LIBSG)\
560           claptmpl.og tesths.cc version.h
561        $(CXXG) ${CXXFLAGSG} ${CXXTEMPLFLAGSG} ${CPPFLAGS} ${DEFSG} -o Singularg${S_EXT} \
562        tesths.cc claptmpl.og $(OBJG) ${LDFLAGS} ${LIBS} -lomalloc mmalloc.og \
563        ${LD_DYN_FLAGS} ${LD_LIBC}
564
565installg: Singularg
566        ${MKINSTALLDIRS} ${bindir}
567        ${INSTALL_PROGRAM} Singularg ${bindir} 
568
569ESingularg: fegetopt.og feResource.cc mod2.h feOpt.cc version.h emacs.cc \
570           feOptES.inc mmalloc.og
571        ${CXXG} ${CXXFLAGSG} ${CPPFLAGS} -DESINGULAR -g ${DEFSG} -o ESingularg emacs.cc fegetopt.og ${LDFLAGS} ${LIBS} -lomalloc mmalloc.og
572
573##
574## compiler and linker options for profile version
575##
576
577CCP             = gcc
578CXXP            = gcc
579
580CFLAGSP         = -pg -O3 ${PIPE}
581CXXFLAGSP       = -pg -O3 ${PIPE}
582CXXTEMPLFLAGSP  = -fno-implicit-templates
583DEFSP           = -DNDEBUG -DOM_NDEBUG -DDO_PROFILE -D@SING_UNAME@ @DEFS@ -DDL_TAIL=$(DL_TAILP)
584LDFLAGSP        = -static @LDFLAGS@
585
586CFLAGSB         = -g -O3 ${PIPE}
587CXXFLAGSB       = -g -O3 ${PIPE}
588CXXTEMPLFLAGSB  = -fno-implicit-templates
589DEFSB           = -D@SING_UNAME@ -DOM_NDEBUG -DNDEBUG @DEFS@ -DDL_TAIL=$(DL_TAILB)
590LDFLAGSB        = -static @LDFLAGS@
591
592# bprof object  file to link with
593BPROFOBJ        = /usr/local/lib/bmon.o
594
595DEFST           = -DNO_INLINE -DNDEBUG -D@SING_UNAME@ -DOM_TRACK=2 -DOM_CHECK=0 @DEFS@ -DDL_TAIL=$(DL_TAILT)
596LDFLAGST        = @LDFLAGS@
597CFLAGST         = -g  -O2 -w ${PIPE}
598CXXFLAGST       = -g  -O2 -w ${PIPE}
599
600##
601## op and ob files for gprof and bprof, ot for mtrack, oc for OMCHECK=1
602##
603
604
605##
606## profile targets
607##
608
609## for gprof
610p_Procs_%.sop: p_Procs_Lib_%.dl_op
611        ${CXXP} ${CXXFLAGSP} ${SFLAGS} ${SLDFLAGS} $< -o $@
612
613p_Procs_Lib_%.dl_op : p_Procs_Lib.cc p_Procs_Dynamic.op
614        ${CXXP} ${CXXFLAGS} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFS} ${SFLAGS} -Dp_Procs_$* -c $< -o $@
615
616%.dl_op: %.cc
617        ${CXXP} ${CXXFLAGSP} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFSP} ${SFLAGS} -c $< -o $@
618
619
620dbmsr.sop: $(DBMSR_SOURCES:.cc=.dl_op)
621        ${CXXP} ${CXXFLAGSP} ${SFLAGS} ${SLDFLAGS} ${LDFLAGS} -o $@ $^ ${MP_LIBS}
622
623claptmpl.op: claptmpl.cc mod2.h
624        $(CXXP)  ${CXXFLAGSP} ${CPPFLAGS} ${DEFSP} -c $< -o $@
625
626%.op: %.cc
627        $(CXXP) ${CXXFLAGSP} ${CXXTEMPLFLAGSP} ${CPPFLAGS} ${DEFSP} -c $< -o $@
628
629$(OBJP2) : %.op: %.c
630        $(CCP)  ${CFLAGSP} ${CPPFLAGS} ${DEFSP} -c $< -o $@
631
632Singularp${S_EXT}: $(OBJP) mmalloc.op\
633           claptmpl.op tesths.cc version.h $(DL_LIBSP)
634        $(CXXP) ${CXXFLAGSP} ${CXXTEMPLFLAGSP} ${CPPFLAGS} ${DEFSP} -o Singularp${S_EXT} \
635        tesths.cc claptmpl.op $(OBJP) ${LDFLAGSP} ${LIBS} -lomalloc_p mmalloc.op\
636        ${LD_DYN_FLAGS}
637
638## for bprof
639p_Procs_%.sob: p_Procs_Lib_%.dl_ob
640        ${CXXP} ${CXXFLAGSB} ${SFLAGS} ${SLDFLAGS} $< -o $@
641
642p_Procs_Lib_%.dl_ob : p_Procs_Lib.cc  p_Procs_Dynamic.ob
643        ${CXXP} ${CXXFLAGS} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFS} ${SFLAGS} -Dp_Procs_$* -c $< -o $@
644
645%.dl_ob: %.cc
646        ${CXXP} ${CXXFLAGSB} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFSB} ${SFLAGS} -c $< -o $@
647
648dbmsr.sob: $(DBMSR_SOURCES:.cc=.dl_ob)
649        ${CXXP} ${CXXFLAGSB} ${SFLAGS} ${SLDFLAGS} ${LDFLAGS} -o $@ $^ ${MP_LIBS}
650
651claptmpl.ob: claptmpl.cc mod2.h
652        $(CXXP)  ${CXXFLAGSP} ${CPPFLAGS} ${DEFSB} -c $< -o $@
653
654%.ob: %.cc
655        $(CXXP) ${CXXFLAGSP} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFSB} -c $< -o $@
656
657$(OBJB2) : %.ob: %.c
658        $(CCP)  ${CFLAGSP} ${CPPFLAGS} ${DEFSB} -c $< -o $@
659
660Singularb${S_EXT}: $(OBJB) claptmpl.ob tesths.cc version.h mmalloc.ob
661        $(CXXP) ${CXXFLAGSP} ${CPPFLAGS} ${DEFSB} -o Singularb${S_EXT} \
662        tesths.cc claptmpl.ob $(OBJB) $(BPROFOBJ) \
663        ${LDFLAGSP} ${LIBS} -lomalloc_ndebug mmalloc.ob ${LD_DYN_FLAGS}
664
665#
666# for mtrack
667#
668p_Procs_%.sot: p_Procs_Lib_%.dl_ot
669        ${CXXP} ${CXXFLAGST} ${SFLAGS} ${SLDFLAGS} $< -o $@
670
671p_Procs_Lib_%.dl_ot : p_Procs_Lib.cc p_Procs_Dynamic.ot
672        ${CXXP} ${CXXFLAGS} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFS} ${SFLAGS} -Dp_Procs_$* -c $< -o $@
673
674%.dl_ot: %.cc
675        ${CXXP} ${CXXFLAGST} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFST} ${SFLAGS} -c $< -o $@
676
677dbmsr.sot: $(DBMSR_SOURCES:.cc=.dl_ot)
678        ${CXX} ${CXXFLAGST} ${SFLAGS} ${SLDFLAGS} ${LDFLAGS} -o $@ $^ ${MP_LIBS}
679
680claptmpl.ot: claptmpl.cc mod2.h
681        $(CXXP)  ${CXXFLAGST} ${CPPFLAGS} ${DEFST} -c $< -o $@
682
683%.ot: %.cc
684        $(CXXP) ${CXXFLAGST} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFST} -c $< -o $@
685
686$(OBJT2) : %.ot: %.c
687        $(CCP)  ${CFLAGST} ${CPPFLAGS} ${DEFST} -c $< -o $@
688
689Singulart${S_EXT}: $(OBJT) claptmpl.ot tesths.cc version.h  mmalloc.ot $(DL_LIBST)
690        $(CXXP) ${CXXFLAGST} ${CPPFLAGS} ${DEFST} -o Singulart${S_EXT} \
691        tesths.cc claptmpl.ot $(OBJT) ${LDFLAGST} ${LIBS} -lomalloc mmalloc.ot \
692        ${LD_DYN_FLAGS}
693
694#
695# for Singulara
696#
697DEFSA = -DOM_CHECK=1 -DHAVE_ASSUME -DNDEBUG -D@SING_UNAME@ @DEFS@ -DDL_TAIL=$(DL_TAILA)
698CFLAGSA         = -g  -O -Wall -Wno-unused ${PIPE}
699CXXFLAGSA       = -g  -O -Wall -Wno-unused ${PIPE}
700
701p_Procs_%.soa: p_Procs_Lib_%.dl_oa
702        ${CXX} ${CXXFLAGSA} ${SFLAGS} ${SLDFLAGS} $< -o $@
703
704p_Procs_Lib_%.dl_oa : p_Procs_Lib.cc p_Procs_Dynamic.oa
705        ${CXX} ${CXXFLAGS} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFS} ${SFLAGS} -Dp_Procs_$* -c $< -o $@
706
707%.dl_oa: %.cc
708        ${CXX} ${CXXFLAGSA} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFSA} ${SFLAGS} -c $< -o $@
709
710dbmsr.soa: $(DBMSR_SOURCES:.cc=.dl_oa)
711        ${CXX} ${CXXFLAGSA} ${SFLAGS} ${SLDFLAGS} ${LDFLAGS} -o $@ $^ ${MP_LIBS}
712
713
714claptmpl.oa: claptmpl.cc mod2.h
715        $(CXX)  ${CXXFLAGSA} ${CPPFLAGS} ${DEFSA} -c $< -o $@
716
717%.oa: %.cc
718        $(CXX) ${CXXFLAGSA} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFSA} -c $< -o $@
719
720$(OBJA2) : %.oa: %.c
721        $(CC)  ${CFLAGSA} ${CPPFLAGS} ${DEFSA} -c $< -o $@
722
723Singulara${S_EXT}: $(OBJA) claptmpl.oa tesths.cc version.h  mmalloc.oa $(DL_LIBSA)
724        $(CXX) ${CXXFLAGSA} ${CPPFLAGS} ${DEFSA} -o Singulara${S_EXT} \
725        tesths.cc claptmpl.oa $(OBJA) ${LDFLAGS} ${LIBS} -lomalloc mmalloc.oa \
726        ${LD_DYN_FLAGS}
727
728#
729# for Macro expansion
730#
731CXXSOURCESD := $(CXXSOURCES:%.cc=%_d.cc) $(STATIC_SOURCES:%.cc=%_d.cc)
732CSOURCESD := $(CSOURCES:%.c=%_d.c)
733OBJD1 := $(CXXSOURCESD:.cc=.od)
734OBJD2 := $(CSOURCESD:.c=.od)
735
736%_d.c : %.c
737        $(CCG) $(CFLAGSG) ${CPPFLAGS} ${DEFS}-E -P $< | $(PERL) -p -e 's/;/;\n/g' | $(PERL) -p -e 's/\{/\n\{/g' | $(PERL) -p -e 's/\}/\n\}/g' > $@
738
739%_d.cc : %.cc
740        $(CCG) $(CXXFLAGS) ${CPPFLAGS} ${DEFS} -E -P $< | $(PERL) -p -e 's/;/;\n/g' | $(PERL) -p -e 's/\{/\n\{/g' | $(PERL) -p -e 's/\}/\n\}/g' > $@
741
742.PRECIOUS: %_d.cc %_d.c
743
744%.od : %.c
745        $(CCG)  ${CFLAGSG} ${CPPFLAGS} ${DEFSG} -c $< -o $@
746
747%.od : %.cc
748        $(CXXG) ${CXXFLAGSG} ${CXXTEMPLFLAGSG} ${CPPFLAGS} ${DEFSG} -c $< -o $@
749
750Singular_d: $(OBJD)  mmalloc.od\
751           claptmpl.og tesths.cc version.h
752        $(CXXG) ${CXXFLAGSG} ${CXXTEMPLFLAGSG} ${CPPFLAGS} ${DEFSG} -o Singularg_d \
753        tesths.cc claptmpl.og $(OBJG) ${LDFLAGS} ${LIBS} -lomalloc mmalloc.od \
754        ${LD_DYN_FLAGS} ${LD_LIBC}
755
756##
757## check_aso
758##
759check_aso:
760        ${PERL} check_aso.pl $(SOURCES)
761##
762## dependencies
763##
764
765%.dd: %.cc mod2.h
766        echo $(@:.dd=.og) $(@:.dd=.op) $(@:.dd=_d.cc) $(@:.dd=.od) $(@:.dd=.ob) $(@:.dd=.ot) $(@:.dd=.oa) $(@:.dd=.dl_o) $(@:.dd=.dl_og) $(@:.dd=.dl_op) $(@:.dd=.dl_od) $(@:.dd=.dl_ob) $(@:.dd=.dl_ot) $(@:.dd=.dl_oa)" " \\ > $@
767        $(CXXM) -DGENTABLE ${CPPFLAGS} ${DEFSG} $< >> $@
768
769%.d: %.c mod2.h
770        echo $(@:.d=.og) $(@:.d=.od) $(@:.dd=_d.c) $(@:.d=.op) $(@:.d=.ob) $(@:.d=.ot) $(@:.d=.oa)" " \\ > $@
771        $(CCM) ${CPPFLAGS} ${DEFSG} $< >> $@
772
773depend:   $(CXXSOURCES:.cc=.dd) $(ESOURCES:.cc=.dd) $(CSOURCES:.c=.d) mod2.h claptmpl.dd
774        cat *.d *.dd >depend
775
776ifeq (depend,$(wildcard depend))
777include depend
778endif
779
780
Note: See TracBrowser for help on using the repository browser.