Hi I am currently converting a heap of stuff from custom make system to 
the GNU autotools, most things are really easy to convert however...

I have a couple of modules that use homegrown compilers to generate 
multiple .cpp and .h files from specification files.

Here is the original make file.

----------------------------------------------------------------------

DICTIONARY := oiMsgs oiMsgGroups oiFields

-include sourcefiles

oimsg_src := $(SOURCE_FILES)
oimsg_hdr := $(HEADER_FILES)

LIBRARY := oimsg
INCLUDES := $(oimsg_hdr) OITypes.h OITypedefs.h

EXTRA_GENERATED := $(oimsg_src) $(oimsg_hdr)

EXPORT_INCLUDES=$(INCLUDES)
EXPORT_LIBRARIES=liboimsg.a

include bby.mk


---------------------------------------------------------------------------------------------

This is my attempt at an automake .am file.

COMPILER= ../src/oimsg

sourcefiles $(oimsg_src) $(oimsg_hdr): dict.stamp

dict.stamp:$(DICTIONARY) $(COMPILER)
    mkdir -p tmp
    cp $(DICTIONARY) tmp/
    (cd tmp && ../$(COMPILER) $(DICTIONARY) && for i in *; do cmp -s $$i 
../$$i || (echo Updating $$i ; mv $$i ../) ; do
ne)
    touch dict.stamp
    rm -rf tmp

CXXFLAGS = -Wall -O

$(COMPILER):
    # Do nothing to stop stupid recursive rules applying

--------------------------------------------------------------------------------------------------------

The file 'sourcefiles' is also generated by the compiler and contains 
declarations for SOURCE_FILES and HEADER_FILES with all the source and 
header files the compiler generated in the appropriate variable.

Here is my attempt at getting this working with automake.

include $(top_srcdir)/../Make.include

OI_DICTIONARY   =   oiMsgs \
                    oiMsgGroups \
                    oiFields

OI_COMPILER =   ../src/oimsg

sourcefiles:
    mkdir -p tmp
    cp $(OI_DICTIONARY) tmp/
    (cd tmp && ../$(OI_COMPILER) $(OI_DICTIONARY) && for i in *; do cmp 
-s $$i ../$$i || (echo Updating $$i ; mv $$i ../
) ; done)
    touch dict.stamp
    rm -rf tmp

lib_LTLIBRARIES             =   liboimsg.la

liboimsg_la_DEPENDENCIES    =   $(OI_DICTIONARY) \
                                $(OI_COMPILER) \
                                sourcefiles

liboimsg_la_SOURCES         =   $(wildcard *.cpp)

include_HEADERS             =   $(wildcard *.h)

The problem is that during a 'make install' all the headers are picked 
up ok, during a make however none of the cpp files are being picked up 
even if I have run the compiler myself so they are sitting in the 
directory before make is run.

Can anyone offer any assistance with this? I'm not a make expert by any 
means and I'm very new to the autotools, any help is greatly appreciated.

thanks.

Gary.





Reply via email to