source: git/Singular/Makefile.in @ f4127e

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