On 03/21/2012 03:39 PM, Christopher Howard wrote:
> Hi. I'm still working on learning autotools (been reading through all
> the manuals) so bear with me. There is something I've been trying to
> figure out, and I would appreciate any guidance:
>
> So, I write C code, and typically try to make it as portable as
> possible. However, I also am somewhat enthusiastic about amd64 assembly
> programming (with GAS syntax) - and so I like to optimize code for that
> architecture.
>
> What I want my configure script to do is check if I am compiling on the
> amd64 architecture, and if so:
>
> * define something appropriate in the config.h, which I can use to
> conditionally leave out the more generic C functions from source files, and
>
> * Put some extra (assembly) source files in a variable (e.g.
> amd64sort.S, amd64insert.S, amd64filter.S...) so that they can be
> appended as extra source in the Makefile. Presumably I'd have something
> like this in Makefile.am:
>
> code:
> --------
> bin_PROGRAMS = myprogram
> myprogram_SOURCES = ${ARCH_DEPS} myprogram.c
> --------
>
> I want to be able to have the assembly in separate source files, instead
> of inline, for maintainability reasons.
> Er... hello? Anybody there? Hmm... must be my anti-magnetic personality. Well, having despaired of getting outside help (if you can't get help at the autoconf mailing list, where else do you go?) I dove back into the problem, scouring the manuals as best I could. I was able to come up with this solution, which seems to work: * I had to add AC_PROG_AS to configure.ac to get configure properly set up to use assembly. * I added the following to configure.ac to do the check, add to the config file, and prep things for automake: code: -------- AC_CHECK_DECL([__amd64__], [AC_DEFINE([AMD64_OPT], 1, [Define to 1 to activate amd64 optimizations]) echo engaging amd64 optimizations AM_CONDITIONAL([AMD64], [true])]) -------- * I used this conditional in Makefile.am: code: -------- if AMD64 myprogam_SOURCES = test.S myprogam.c else myprogam_SOURCES = myprogam.c endif -------- Seems to work - not sure if it is the proper or sensible way to do it. Not sure how portable either: I think some systems use an __AMD64__ declaration instead of __amd64__, but I'm not sure about that. I should perhaps be checking for either one. I originally tried something more like what I mentioned in my first post, but automake died, complaining that "Configure substitutions are not allowed in _SOURCES variables". -- frigidcode.com indicium.us
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Autoconf mailing list [email protected] https://lists.gnu.org/mailman/listinfo/autoconf
