github.com/aergoio/aergo@v1.3.1/libtool/src/gmp-6.1.2/mpn/Makeasm.am (about) 1 ## Automake asm file rules. 2 3 # Copyright 1996, 1998-2002 Free Software Foundation, Inc. 4 # 5 # This file is part of the GNU MP Library. 6 # 7 # The GNU MP Library is free software; you can redistribute it and/or modify 8 # it under the terms of either: 9 # 10 # * the GNU Lesser General Public License as published by the Free 11 # Software Foundation; either version 3 of the License, or (at your 12 # option) any later version. 13 # 14 # or 15 # 16 # * the GNU General Public License as published by the Free Software 17 # Foundation; either version 2 of the License, or (at your option) any 18 # later version. 19 # 20 # or both in parallel, as here. 21 # 22 # The GNU MP Library is distributed in the hope that it will be useful, but 23 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 24 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 25 # for more details. 26 # 27 # You should have received copies of the GNU General Public License and the 28 # GNU Lesser General Public License along with the GNU MP Library. If not, 29 # see https://www.gnu.org/licenses/. 30 31 32 # COMPILE minus CC. 33 # 34 COMPILE_FLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ 35 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $(ASMFLAGS) 36 37 # Flags used for preprocessing (in ansi2knr rules). 38 # 39 PREPROCESS_FLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ 40 $(CPPFLAGS) 41 42 43 # Recent versions of automake (1.5 and up for instance) append automake 44 # generated suffixes to this $(SUFFIXES) list. This is essential for us, 45 # since .c must come after .s, .S and .asm. If .c is before .s, for 46 # instance, then in the mpn directory "make" will see add_n.c mentioned in 47 # an explicit rule (the ansi2knr stuff) and decide it must have add_n.c, 48 # even if add_n.c doesn't exist but add_n.s does. See GNU make 49 # documentation "(make)Implicit Rule Search", part 5c. 50 # 51 # On IRIX 6 native make this doesn't work properly though. Somehow .c 52 # remains ahead of .s, perhaps because .c.s is a builtin rule. .asm works 53 # fine though, and mpn/mips3 uses this. 54 # 55 SUFFIXES = .s .S .asm 56 57 58 # .s assembler, no preprocessing. 59 # 60 .s.o: 61 $(CCAS) $(COMPILE_FLAGS) `test -f '$<' || echo '$(srcdir)/'`$< 62 .s.obj: 63 $(CCAS) $(COMPILE_FLAGS) `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` 64 .s.lo: 65 $(LIBTOOL) --mode=compile --tag=CC $(CCAS) $(COMPILE_FLAGS) `test -f '$<' || echo '$(srcdir)/'`$< 66 67 68 # can be overridden during development, eg. "make RM_TMP=: mul_1.lo" 69 RM_TMP = rm -f 70 71 72 # .S assembler, preprocessed with cpp. 73 # 74 # It's necessary to run $(CPP) separately, since it seems not all compilers 75 # recognise .S files, in particular "cc" on HP-UX 10 and 11 doesn't (and 76 # will silently do nothing if given a .S). 77 # 78 # For .lo we need a helper script, as described below for .asm.lo. 79 # 80 .S.o: 81 $(CPP) $(PREPROCESS_FLAGS) `test -f '$<' || echo '$(srcdir)/'`$< | grep -v '^#' >tmp-$*.s 82 $(CCAS) $(COMPILE_FLAGS) tmp-$*.s -o $@ 83 $(RM_TMP) tmp-$*.s 84 .S.obj: 85 $(CPP) $(PREPROCESS_FLAGS) `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` | grep -v '^#' >tmp-$*.s 86 $(CCAS) $(COMPILE_FLAGS) tmp-$*.s -o $@ 87 $(RM_TMP) tmp-$*.s 88 .S.lo: 89 $(LIBTOOL) --mode=compile --tag=CC $(top_srcdir)/mpn/cpp-ccas --cpp="$(CPP) $(PREPROCESS_FLAGS)" $(CCAS) $(COMPILE_FLAGS) `test -f '$<' || echo '$(srcdir)/'`$< 90 91 92 # .asm assembler, preprocessed with m4. 93 # 94 # .o and .obj are non-PIC and just need m4 followed by a compile. 95 # 96 # .lo is a bit tricky. Libtool (as of version 1.5) has foo.lo as a little 97 # text file, and .libs/foo.o and foo.o as the PIC and non-PIC objects, 98 # respectively. It'd be asking for lots of trouble to try to create foo.lo 99 # ourselves, so instead arrange to invoke libtool like a --mode=compile, but 100 # with a special m4-ccas script which first m4 preprocesses, then compiles. 101 # --tag=CC is necessary since foo.asm is otherwise unknown to libtool. 102 # 103 # Libtool adds -DPIC when building a shared object and the .asm files look 104 # for that. But it should be noted that the other PIC flags are on occasion 105 # important too, in particular FreeBSD 2.2.8 gas 1.92.3 requires -k before 106 # it accepts PIC constructs like @GOT, and gcc adds that flag only under 107 # -fPIC. (Later versions of gas are happy to accept PIC stuff any time.) 108 # 109 .asm.o: 110 $(M4) -DOPERATION_$* `test -f '$<' || echo '$(srcdir)/'`$< >tmp-$*.s 111 $(CCAS) $(COMPILE_FLAGS) tmp-$*.s -o $@ 112 $(RM_TMP) tmp-$*.s 113 .asm.obj: 114 $(M4) -DOPERATION_$* `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` >tmp-$*.s 115 $(CCAS) $(COMPILE_FLAGS) tmp-$*.s -o $@ 116 $(RM_TMP) tmp-$*.s 117 .asm.lo: 118 $(LIBTOOL) --mode=compile --tag=CC $(top_srcdir)/mpn/m4-ccas --m4="$(M4)" $(CCAS) $(COMPILE_FLAGS) `test -f '$<' || echo '$(srcdir)/'`$<