source: git/kernel/Makefile.in.SAVE @ fbc7cb

spielwiese
Last change on this file since fbc7cb was 3aea08, checked in by Oleksandr Motsak <motsak@…>, 13 years ago
ADD: automake support for kernel/ (Makefile.am) ADD: libtool is going to be used for building kernel tests ADD: main configure.ac now provides the needed flags for building kernel tests
  • Property mode set to 100644
File size: 12.4 KB
RevLine 
[f6e863]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@
15##
16## various paths
17##
18srcdir          = @srcdir@
19prefix          = @prefix@
20exec_prefix     = @exec_prefix@
21libdir          = @libdir@
22# program executable goes here
23bindir          = @bindir@
24# includes are taken from here
25includedir      = @includedir@
26install_bindir  = ${install_prefix}/${SINGUNAME}
27
28##
29## various programs
30##
31@SET_MAKE@
32CC              = @CC@
[13e74c]33LD              = @LD@
[f6e863]34CXX             = @CXX@
35LEX             = @LEX@
36PERL            = @PERL@
37BISON           = bison
38INSTALL         = @INSTALL@
[d3c2f9]39INSTALL_PROGRAM = @INSTALL_PROGRAM@
[f6e863]40INSTALL_DATA    = @INSTALL_DATA@
41MKINSTALLDIRS   = ./mkinstalldirs
42LN_S            = @LN_S@
43
44##
45## compiler and linker options
46##
47PIPE            = @PIPE@
[599326]48CFLAGS          = @CFLAGS@ ${PIPE}
49CXXFLAGS        = @CXXFLAGS@ ${PIPE}
[f6e863]50CXXTEMPLFLAGS   = @CXXTEMPLFLAGS@
[b1dfaf]51CPPFLAGS        = -I${srcdir} -I.. -I@prefix@  @CPPFLAGS@
[0012cd]52DEFS            = -DNDEBUG -DOM_NDEBUG -D@SING_UNAME@ @DEFS@
[f6e863]53LDFLAGS         = @LDFLAGS@
54LD_DYN_FLAGS    = @LD_DYN_FLAGS@
55SFLAGS          = @SFLAGS@
56SLDFLAGS        = @SLDFLAGS@
57
58LD_LIBC         = -lc
59STATIC_LDFLAGS  = @STATIC_LDFLAGS@
60# under cygwin, do not explicitly link against -lm, for it is the cygwin
61# lib -- if you really want to do this, use -lm as the _last_ thing on the
62# arguments to link
63ifneq ($(SINGUNAME),ix86-Win)
64LIBS            = -lm @NEED_LIBS@
65else
66# for the 2-0-* versions under Windows, we don't need gdbm, readline and ncurses
[d4f80c]67LIBS            = -lsingfac -lsingcf -lntl -lgmp -lreadline -lncurses -lomalloc_ndebug
[f6e863]68#LIBS           = -lsingfac -lsingcf -lgmp
69endif
70MP_LIBS         = @MP_LIBS@
[c14061]71
72ifdef LD_STATIC
73LDFLAGS  := ${STATIC_LDFLAGS} ${LDFLAGS}
[d3c2f9]74LIBS := ${MP_LIBS} ${LIBS}
[c14061]75DL_KERNEL =
76else
77LDFLAGS  := ${LD_DYN_FLAGS} ${LDFLAGS}
[86efbd]78DL_KERNEL       = @DL_KERNEL@
[c14061]79endif
[f6e863]80
81# CXXFLAGS =  -g -Wall -Wno-unused
82# CFLAGS =  -g -Wall -Wno-unused
83##
84## End configuration dependend stuff
85#################################################################
86
87###
88### file sets
89###
90
91# normal C++ source files
[5865b5c]92CXXSOURCES=clapconv.cc \
[7b87ef]93    clapsing.cc \
[4bbe3b]94    febase.cc feread.cc feResource.cc \
[f6e863]95    ffields.cc hdegree.cc hilb.cc hutil.cc \
[ef7b98]96    sca.cc gring.cc gr_kstd2.cc summator.cc ncSAMult.cc ncSAFormula.cc \
[fc5095]97    ideals.cc intvec.cc int64vec.cc \
[08ecff]98    khstd.cc kstdfac.cc \
99    kstd1.cc kstd2.cc kutil.cc \
[a6904c]100    longalg.cc longrat.cc longrat0.cc \
[08ecff]101    maps.cc matpol.cc misc.cc gnumpfl.cc gnumpc.cc \
[07e8ae]102    rmodulo2m.cc rmodulon.cc rintegers.cc \
[c9e0b0]103    modulop.cc mpr_complex.cc sparsmat.cc fast_maps.cc \
[5e87a1]104    fglmzero.cc fglmvec.cc fglmgauss.cc fglmhom.cc fglmcomb.cc \
[f6e863]105    numbers.cc polys.cc p_polys.cc polys0.cc polys1.cc polys-impl.cc \
[cb0fbe]106    ring.cc shortfl.cc kspoly.cc \
[08ecff]107    syz.cc syz0.cc syz1.cc syz2.cc syz3.cc\
[5e87a1]108    timer.cc weight.cc \
[f6e863]109    GMPrat.cc multicnt.cc npolygon.cc semic.cc spectrum.cc splist.cc \
[aa4ca1]110    mod_raw.cc walkProc.cc walkMain.cc walkSupport.cc\
[5e87a1]111    eigenval.cc units.cc kbuckets.cc sbuckets.cc\
[f6e863]112    mpr_inout.cc mpr_base.cc mpr_numeric.cc \
113    prCopy.cc p_Mult_q.cc \
114    pDebug.cc pInline2.cc pInline1.cc pInline0.cc \
[07b76e]115    pShallowCopyDelete.cc fast_mult.cc digitech.cc \
[df638fb]116    tgb.cc tgbgauss.cc ringgb.cc f5data.cc f5lists.cc f5gb.cc \
[d24881]117    ratgring.cc shiftgb.cc gfan.cc \
[b46956]118    linearAlgebra.cc longtrans.cc
[599326]119CXXSOURCES2     = SingularBuilder.cpp
[f6e863]120
121# normal C source files
[d3c2f9]122CSOURCES=weight0.c fegetopt.c fereadl.c dError.c mmstd.c
[f6e863]123
124# C++ sources which are used if part of the kernel are dynamically linked
[d3c2f9]125ifeq ($(DL_KERNEL),1)
126DL_KERNEL_SOURCES=p_Procs_Dynamic.cc
127else
128DL_KERNEL_SOURCES=
129endif
[f6e863]130
131# C++ sources which are used for dynamic libraries if part of the kernel is
132# dynamically linked
[d3c2f9]133DL_LIB_SOURCES=p_Procs_Lib.cc
[f6e863]134
135# C++ sources which are used if no parts of the kernel are dynamically linked
[d3c2f9]136STATIC_SOURCES=p_Procs_Static.cc
[f6e863]137
138# special C++ source files (need extra compiling and/or linking), for which
139# dependencies should be generated
[d3c2f9]140ESOURCES=mmalloc.cc $(DL_KERNEL_SOURCES) $(DL_LIB_SOURCES) $(STATIC_SOURCES)
[f6e863]141
142SOURCES=${CSOURCES} ${CXXSOURCES} \
[9a7638]143        prCopyTemplate.cc \
[f6e863]144        p_Delete__T.cc p_ShallowCopyDelete__T.cc \
145        p_Copy__T.cc p_Mult_nn__T.cc  pp_Mult_nn__T.cc \
146        pp_Mult_mm__T.cc p_Mult_mm__T.cc \
147        p_Minus_mm_Mult_qq__T.cc p_Add_q__T.cc \
148        p_Neg__T.cc pp_Mult_Coeff_mm_DivSelect__T.cc \
149        pp_Mult_Coeff_mm_DivSelectMult__T.cc \
150        p_Merge_q__T.cc pp_Mult_mm_Noether__T.cc\
151        p_kBucketSetLm__T.cc \
[c6e80e]152        kInline.h
[08ecff]153
[1bc9c4]154HEADERS=hutil.h idrec.h stairc.h ideals.h \
[a6904c]155        longalg.h structs.h intvec.h int64vec.h longrat.h \
[1fec28]156        numbers.h clapconv.h maps.h \
[1c3b7e]157        clapsing.h matpol.h polys.h p_polys.h syz.h \
[6aef6f2]158        ring.h timer.h dError.h fast_maps.h \
[9708d8]159        febase.h shortfl.h mpr_complex.h mpr_global.h \
[a7fbdd]160        summator.h ncSAMult.h ncSACache.h sca.h gring.h ncSAFormula.h \
[6bde67]161        walkProc.h walkMain.h walkSupport.h\
[c14061]162        ffields.h khstd.h sparsmat.h gnumpfl.h gnumpc.h \
[c9e0b0]163        fglm.h kstd1.h \
[49abe32]164        rmodulo2m.h rmodulon.h rintegers.h modulop.h weight.h \
[9708d8]165        fglmgauss.h fglmvec.h \
166        kstdfac.h kmatrix.h\
167        kutil.h \
[4bbe3b]168        dbm_sl.h polys-impl.h \
[f6e863]169        GMPrat.h multicnt.h npolygon.h semic.h spectrum.h splist.h multicnt.h \
[08ecff]170        eigenval.h units.h mod_raw.h kbuckets.h sbuckets.h\
[f6e863]171        mpr_global.h mpr_inout.h mpr_base.h mpr_numeric.h \
[486bcc1]172        fegetopt.h options.h \
[cb0fbe]173        ratgring.h shiftgb.h prCopy.h prCopyMacros.h \
[f6e863]174        p_MemAdd.h p_MemCopy.h p_MemCmp.h p_Numbers.h \
[d1b999]175        pInline2.h pInline1.h pInline0.h mmalloc.h \
[9a310a]176        pShallowCopyDelete.h \
[f6e863]177        p_Procs_Dynamic.h p_Procs_Impl.h p_Procs_Set.h \
[d3398c]178        p_Procs.h p_Procs_Static.h p_Mult_q.h gfan.h
[f6e863]179
180DISTFILES=${SOURCES} ${HEADERS} ${ESOURCES} \
[1a5c219]181        Makefile.in \
[c14061]182        mod2.h.in testgh install-sh mkinstalldirs \
[7a08359]183        prCopy.pl
[f6e863]184
[599326]185OBJS := $(CXXSOURCES:.cc=.o) $(CSOURCES:.c=.o) #$(CXXSOURCES2:.cpp=.o)
[9c979f4]186OBJS2 := $(ESOURCES:.cc=.o)
187OBJSG2 := $(ESOURCES:.cc=.og)
[c0e207f]188OBJSP2 := $(ESOURCES:.cc=.op)
[f6e863]189
190P_PROCS_MODULES = FieldZp FieldIndep FieldQ FieldGeneral
191
192ifeq ($(DL_KERNEL),1)
193OBJS    := $(OBJS) $(DL_KERNEL_SOURCES:.cc=.o)
[d3c2f9]194DL_LIBS := $(P_PROCS_MODULES:%=p_Procs_%.so)
[f6e863]195else
196ifndef LD_STATIC
197LIBS := $(MP_LIBS) $(LIBS)
198endif
[1c3b7e]199OBJS := $(OBJS) $(STATIC_SOURCES:.cc=.o)
[f6e863]200DL_LIBS=
201endif
202
203##
204## Build Targets
205##
206.cc.o: 
207        ${CXX} ${CXXFLAGS} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFS} -c $<
208.c.o:
209        ${CC} ${CFLAGS} ${CPPFLAGS} ${DEFS} -c $<
210
211# building objects for shared libraries
212p_Procs_Lib_%.dl_o : p_Procs_Lib.cc p_Procs_Dynamic.o
213        ${CXX} ${CXXFLAGS} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFS} ${SFLAGS} -Dp_Procs_$* -c $< -o $@
214
215%.dl_o : %.cc
216        ${CXX} ${CXXFLAGS} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFS} ${SFLAGS} -c $< -o $@
217
[13e43e]218DL_TAILG=\"sog\"
219DL_TAILP=\"sop\"
220
221
[10d98c]222OBJG= $(CXXSOURCES:.cc=.og) $(CSOURCES:.c=.og)
[13e43e]223
[10d98c]224ifeq ($(DL_KERNEL),1)
225OBJG    := $(OBJG) $(DL_KERNEL_SOURCES:.cc=.og)
[8eabf99]226OBJP    := $(OBJP) $(DL_KERNEL_SOURCES:.cc=.op)
[d3c2f9]227DL_LIBSG := $(P_PROCS_MODULES:%=p_Procs_%.sog)
[8eabf99]228DL_LIBSP := $(P_PROCS_MODULES:%=p_Procs_%.sop)
[13e43e]229else
[10d98c]230OBJG := $(OBJG) $(STATIC_SOURCES:.cc=.og)
[8eabf99]231OBJP := $(OBJP) $(STATIC_SOURCES:.cc=.op)
[13e43e]232DL_LIBSG=
[23e760]233DL_LIBSP=
[13e43e]234endif
235
[d8431c]236all:    libkernel.a libkernel_g.a mmalloc.o ${DL_LIBS} ${DL_LIBSG} ${OBJS2}
[c14061]237
238libkernel.a: ${OBJS}
[fbe4eb]239        -rm -f libkernel.a
[c14061]240        ar cr $@ $^
[f6e863]241
242p_Procs_Lib.o: p_Procs_Lib.inc
243
244# Hmm compiling with -fomit-frame-pointer resulted in access violation
245# under cygwin
246prCopy.o: prCopy.inc
247
248prCopy.inc : prCopyMacros.h prCopyTemplate.cc prCopy.pl
[223fd4]249        $(PERL) prCopy.pl > prCopy.xx && mv prCopy.xx prCopy.inc
[f6e863]250
251# additional dependencies for p_Procs_[Static|Dynamic|Lib].cc
[d29df8]252p_Procs_Static.o p_Procs_Static.og p_Procs_Static.op: p_Procs_Static.inc
[d3c2f9]253p_Procs_Static.inc: p_Procs_Static.h
[d29df8]254p_Procs_Dynamic.o p_Procs_Lib.o p_Procs_Dynamic.og p_Procs_Lib.og\
255  p_Procs_Dynamic.op p_Procs_Lib.op: p_Procs_Dynamic.inc
[f6e863]256p_Procs_Dynamic.inc p_Procs_Lib.inc: p_Procs_Dynamic.h
257
258# here is how p_Procs_[Static|Dynamic].inc is generated
[c9208c6]259p_Procs_Static.inc: p_Procs_Generate.cc p_Procs_Impl.h mod2.h
260        $(CXX) $(CPPFLAGS) -g -Dp_Procs_Static p_Procs_Generate.cc -o p_Procs_Static
261        ./p_Procs_Static > p_Procs_Static.xx && mv p_Procs_Static.xx p_Procs_Static.inc
262        -rm -f p_Procs_Static p_Procs_Static.exe
263
264p_Procs_Dynamic.inc: p_Procs_Generate.cc p_Procs_Impl.h mod2.h
265        $(CXX) $(CPPFLAGS) -g -Dp_Procs_Dynamic p_Procs_Generate.cc -o p_Procs_Dynamic
266        ./p_Procs_Dynamic > p_Procs_Dynamic.xx && mv p_Procs_Dynamic.xx p_Procs_Dynamic.inc
267        -rm -f p_Procs_Dynamic p_Procs_Dynamic.exe
[f6e863]268
269p_Procs_%.so: p_Procs_Lib_%.dl_o
270        $(LD) ${SLDFLAGS} -o $@ $^
271
272##
273## install targets
274##
[a1ab2a]275install-nolns: install
276
[2eb19e]277install-libsingular: install
278        -${MKINSTALLDIRS} ${includedir}
279        -${MKINSTALLDIRS} ${includedir}/singular
[c6e80e]280        -for file in *.h kInline.h; do sed -e "s:<kernel/:<singular/:"< $$file | sed -e "s:<Singular/:<singular/:"|sed -e "s:<omalloc/:<:"|sed -e "s:<factory/:<:" > ${includedir}/singular/$$file; done
[a1ab2a]281
[4bbe3b]282install: all installbin
[c14061]283
[be6689f]284install_all: install libkernel_p.a ${DL_LIBSP}
285        - ranlib libkernel_p.a
286ifeq (,${DL_LIBS})
287else
[511299]288ifeq (,${DL_LIBSP})
[be6689f]289else
290        -for file in ${DL_LIBSP}; do ${INSTALL_PROGRAM} $$file ../Singular; done
291endif
292endif
293
294
[0c21f8]295installbin: ${DL_LIBS} ${DL_LIBSG} libkernel.a libkernel_g.a
[c14061]296        ${MKINSTALLDIRS} ${bindir}
[35b491]297        - ranlib libkernel.a
[c0e207f]298        - ranlib libkernel_g.a
[672566a]299ifeq (,${DL_LIBS})
300else
[a2787d]301        -${INSTALL_PROGRAM} ${DL_LIBS} ${bindir}
[672566a]302ifeq (,${DL_LIBSG})
303else
[be6689f]304        -for file in ${DL_LIBS} ${DL_LIBSG}; do ${INSTALL_PROGRAM} $$file ../Singular; done
[672566a]305endif
306endif
307
[f6e863]308
[ccf9ea]309install-bindist: ${DL_LIBS} libkernel.a
310        ${MKINSTALLDIRS} ${bindir}
[672566a]311ifeq (,${DL_LIBS})
312else
[ccf9ea]313        -${INSTALL_PROGRAM} ${DL_LIBS} ${bindir}
[672566a]314endif
[ccf9ea]315
[f6e863]316##
317## clean targest
318##
319mostlyclean:
[4bbe3b]320        -rm -f p_Procs_*.inc
[cbc4b8]321        -rm -f *.o *.og core *.op p_Procs *.dl_o*
[f6e863]322
323clean: mostlyclean
[cbc4b8]324        -rm -f *.bak *.d *.dd depend *.a *.so*
[f6e863]325
326distclean: clean
[d8431c]327        -rm -f *~ .\#*
[c14061]328        -rm -f mod2.h Makefile TAGS* tags config.status config.cache config.log
329
330srcclean:
331        @echo "This command is intended for maintainers to use;"
332        @echo "Rebuilding the deleted files requires flex"
333        @echo "bison, perl"
[f6e863]334
335maintainer-clean: distclean srcclean
336        @echo "This command is intended for maintainers to use;"
337        @echo "Rebuilding the deleted files requires flex"
338        @echo "bison, perl and autoconf"
339
340##
341## miscellanous targets
342##
343
344TAGS:   ${SOURCES} ${ESOURCES} ${HEADERS}
345        etags ${SOURCES} ${ESOURCES} ${HEADERS}
346
347tags:   
[c985c5]348        ctags *.c *.h *.cc *.inc
[f6e863]349
350##
351## Below here is stuff for developpers
352#################################################################
353
354
355##
356## .og files for having -O and -g object versions available at the same time
357##
358
359OBJG1 := $(CXXSOURCES:.cc=.og)
360OBJG2 := $(CSOURCES:.c=.og)
361
362##
363## compiler and linker options for debug version
364##
365
[fbf19c]366CCG             = ${CC}
367CXXG            = ${CXX}
[f6e863]368CXXM            = gcc -MM -MG -DGENERATE_DEPEND
369CCM             = gcc -MM -MG -DGENERATE_DEPEND
370
[fbf19c]371CFLAGSG         = -g ${PIPE}
372CXXFLAGSG       = -g ${PIPE}
[f6e863]373DEFSG           = -D@SING_UNAME@ @DEFS@ -DDL_TAIL=$(DL_TAILG)
374
375##
376## Debug Targets
377##
378
[27fc50]379p_Procs_%.sog: p_Procs_Lib_%.dl_og
380        $(LD) ${SLDFLAGS} -o $@ $^
[f6e863]381
382p_Procs_Lib_%.dl_og : p_Procs_Lib.cc  p_Procs_Dynamic.og
383        ${CXXG} ${CXXFLAGSG} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFSG} ${SFLAGS} -Dp_Procs_$* -c $< -o $@
384
385%.dl_og: %.cc
[c0e207f]386        ${CXXG} ${CXXFLAGSG} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFSG} ${SFLAGS} -c $< -o $@
[f6e863]387
388%.og: %.cc
[c0e207f]389        $(CXXG) ${CXXFLAGSG} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFSG} -c $< -o $@
[f6e863]390
391$(OBJG2) : %.og: %.c
392        $(CCG)  ${CFLAGSG} ${CPPFLAGS} ${DEFSG} -c $< -o $@
393
[c0e207f]394libkernel_g.a: ${OBJG} ${DL_LIBSG} ${OBJSG2}
395        -rm -f libkernel_g.a
396        ar cr $@ ${OBJG}
[f6e863]397
[c0e207f]398##
399## .op files for profiling
400##
[f6e863]401
[c0e207f]402OBJP1 := $(CXXSOURCES:.cc=.op)
403OBJP2 := $(CSOURCES:.c=.op)
[f6e863]404
[c0e207f]405OBJP=$(OBJP1) $(OBJP2)
[f6e863]406
[c0e207f]407ifeq ($(DL_KERNEL),1)
408OBJP    := $(OBJP) $(DL_KERNEL_SOURCES:.cc=.op)
409else
410OBJP := $(OBJP) $(STATIC_SOURCES:.cc=.op)
411endif
[f6e863]412
[c0e207f]413##
414## compiler and linker options for profiling version
415##
416
417CCP             = ${CC}
418CXXP            = ${CXX}
419
420CFLAGSP         = -g -pg -O ${PIPE}
421CXXFLAGSP       = -g -pg -O ${PIPE}
422DEFSP           = -D@SING_UNAME@ @DEFS@ -DDL_TAIL=$(DL_TAILP)
423
424##
425## Profiling Targets
426##
427
428p_Procs_%.sop: p_Procs_Lib_%.dl_op
429        ${CXXP} ${CXXFLAGSP} ${SFLAGS} ${SLDFLAGS} $< -o $@
430
431p_Procs_Lib_%.dl_op : p_Procs_Lib.cc  p_Procs_Dynamic.op
432        ${CXXP} ${CXXFLAGSP} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFSP} ${SFLAGS} -Dp_Procs_$* -c $< -o $@
433
434%.dl_op: %.cc
435        ${CXXP} ${CXXFLAGSP} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFSP} ${SFLAGS} -c $< -o $@
436
437%.op: %.cc
438        $(CXXP) ${CXXFLAGSP} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFSP} -c $< -o $@
439
440$(OBJP2) : %.op: %.c
441        $(CCP)  ${CFLAGSP} ${CPPFLAGS} ${DEFSP} -c $< -o $@
[f6e863]442
[c0e207f]443libkernel_p.a: ${OBJP} ${DL_LIBSP} ${OBJSP2}
444        -rm -f libkernel_p.a
445        ar cr $@ ${OBJP}
[f6e863]446
447##
448## dependencies
449##
450
451%.dd: %.cc mod2.h
[c0e207f]452        echo $(@:.dd=.og) $(@:.dd=.op) $(@:.dd=.dl_o) $(@:.dd=.dl_og) $(@:.dd=.dl_op)" " \\ > $@
[f6e863]453        $(CXXM) -DGENTABLE ${CPPFLAGS} ${DEFSG} $< >> $@
454
455%.d: %.c mod2.h
[c0e207f]456        echo $(@:.d=.og) $(@:.d=.op) " " \\ > $@
[f6e863]457        $(CCM) ${CPPFLAGS} ${DEFSG} $< >> $@
458
[8ad9898]459depend:   $(CXXSOURCES:.cc=.dd) $(ESOURCES:.cc=.dd) $(CSOURCES:.c=.d) mod2.h
[7d9974]460        cat *.d *.dd >depend
[f6e863]461
462ifeq (depend,$(wildcard depend))
463include depend
464endif
465
466
Note: See TracBrowser for help on using the repository browser.