From: els@icf.hrb.com (Eric L. Schott)
Newsgroups: comp.lang.c
Subject: <None>
Date: 13 Nov 92 08:24:35 EST
Organization: HRB Systems, Inc.

In article <1992Nov10.220743.4479@quintro.uucp>, reb@quintro.uucp (Roger E. Benz) writes:
> I would like to setup a Makefile that would allow me to create two
> different targets from the same source files.  Our primary target is
> a 68k embedded system for which we use a cross compiler.  During
> development, however, we find it useful to build test version using
> the native compiler.  Currently, I have to edit my Makefile to switch
> compilers and then run: make clean.  If anyone knows of an easier way to
> accomplish this, I would be most thankful.

Attached is a tar save set which does just that.  It contains
five files:
  MakeInit:	Only file user creates.  This contains directives
		to build executables/libraries for sun, 040, and
		860 from one set of source files.  This is the only
		file users copy to their source director(ies)
  Makefile	Standard make file.  Store in $JPRR/lib/
  make.part-1	ditto
  make.part-2	ditto
  make.c	Enhanced "make" to process above.  Put in path BEFORE
		standard make.  This program chases links in an interesting
		manner.  See the source for details.

Also, attached are two COMPLEX MakeInit's (the only file users create).
Actually, if there was ever an obfuscated Make contest,  this would be my
entry. (You will see why when you try to understand make.part-2.)  This
is still work inprogress.  

In the code, you should use structures such as
  #if defined(CPU_SUN)
    ....
  #elif defined(CPU_68K)
    ....
  #elif defined(CPU_860)
    ....
  #else
  #error Undefined CPU
  #endif

-------------------------  Begin sample MakeInit  --------------------------
#
###############################################################################
#									      #
#                       GLOBAL TARGET DEFINITIONS                             #
#									      #
###############################################################################
#
# This file specifies the information for the JPRR makefiles to
# build one or more targets.  These targets can include both
# libraries and executables (i.e. processes or programs).

# Define the libraries and/or executables (programs, processes, or 
# tasks) to build.  For libraries, the make procedures automatically
# add the ".cpu.a" extensions.  For executables, the make procecudures
# automatically add the ".cpu" extensions.  If you are building both
# libraries and executables which use those libraries, define the
# libraries first.
TARGETS = liba prgma prgmd subdir/test

# Define the additional CPP flags used to compile all source files.
CPPFLAGS = -DOUR_TEST

# Define the additional C flags used to compile all source files.
CFLAGS = -g

# Define the libraries to link with all executables.  This does 
# not apply to libraries as targets.
LIBRARIES = 

# Define files to remove with the "clean" target
CLEAN_EXTRA = subdir/*~ subdir/core subdir/a.out subdir/b.out


###############################################################################
#									      #
#                      SPECIFIC TARGET DEFINITIONS                            #
#									      #
###############################################################################

# Define source files (without trailing ".c" or ".s" extensions) which
# comprise the target.
            OBJS_liba = b c
# Define the target type with the "library" or "executable" string.
            TYPE_liba = library
# Define the target CPU with either "68k," "sun," or "860."
             CPU_liba = 68k sun
 b.68k.o := CPPFLAGS += -DSPECIAL_CASE


#            OBJS_libd = b c
#            TYPE_libd = library
#             CPU_libd = sun


           OBJS_prgma = a
           TYPE_prgma = executable
            CPU_prgma = 68k
# Even additonal compile flags when building target "prgma"
#    prgma :=  CPPFLAGS += -DPRGMA
#    prgma :=    CFLAGS += -O
# Define additional libraries used to build target.
prgma.68k :=  LIBRARIES_prgma = liba.68k.a


           OBJS_prgmd = d
           TYPE_prgmd = executable
            CPU_prgmd = sun
prgmd.sun :=  LIBRARIES_prgmd = liba.sun.a

     OBJS_subdir/test = subdir/e
     TYPE_subdir/test = executable
      CPU_subdir/test = sun
LIBRARIES_subdir/test = libd.sun.a
-------------------------  Begin sample MakeInit  --------------------------
#
###############################################################################
#									      #
#                       GLOBAL TARGET DEFINITIONS                             #
#									      #
###############################################################################
#
# This file specifies the information for the JPRR makefiles to
# build one or more targets.  These targets can include both
# libraries and executables (i.e. processes or programs).

# Define the libraries and/or executables (programs, processes, or 
# tasks) to build.  For libraries, the make procedures automatically
# add the ".cpu.a" extensions.  For executables, the make procecudures
# automatically add the ".cpu" extensions.  If you are building both
# libraries and executables which use those libraries, define the
# libraries first.
TARGETS = libJP_JCOMLIB libJP_JCOM68K libJP_JCOM860 \
	  JPxxCM_Init JPxxCM_Close \
	  JPxxCM_Remote_Receive JPxxCM_Remote_Send \
          JPxxCM_860_Receive JPxxCM_860_Comm_ISR


# Define the additional CPP flags used to compile all source files.
CPPFLAGS =  -I. -Iinc -I$(JPRR)/inc -I$(PROJINC)

# Define library search path for the shared object library, so the 
# shared object library can be found by executables.
MakeCWD = $(JPRR)/JPx/JPxx/JPxxC/tmp
#MakeCWD = $(JPRR)/kls/JPxxC/tmp  ---  FOR KLS TESTING

libJP_JCOM860 := CPPFLAGS += -I/usr/mc860/os/include \
                                 -I/usr/mc860/c/include -I/usr/vw/h

JPxxCM_860_Receive := CPPFLAGS += -I/usr/mc860/os/include \
                                 -I/usr/mc860/c/include -I/usr/vw/h

JPxxCM_860_Comm_ISR := CPPFLAGS += -I/usr/mc860/os/include \
                                 -I/usr/mc860/c/include -I/usr/vw/h

# Define the additional C flags used to compile all source files.
CFLAGS = -g
JPxxCM_Init.sun := SYSLIBS.sun += -ldl
JPxxCM_Remote_Send.sun := SYSLIBS.sun += -dc -dp -ldl
JPxxCM_Remote_Receive.sun := SYSLIBS.sun += -dc -dp -ldl

# Define the libraries to link with all executables.  This does 
# not apply to libraries as targets.
LIBRARIES = 
SYSLIBS.68k = $(JPRR)/JPx/JPxx/JPxxC/JPxxCT/tmp/JPxxCT.68k.a
# Define files to remove with the "clean" target
  CLEAN_EXTRA = 


###############################################################################
#									      #
#                      SPECIFIC TARGET DEFINITIONS                            #
#									      #
###############################################################################

            DATA_libJP_JCOMLIB = JPxxC_JEXTVAR_External_Variables
            OBJS_libJP_JCOMLIB = ../JPxxCM/tmp/JPxxCM \
                                 ../JPxxCM/tmp/JPxxCM_Util \
                                 ../JPxxCM/tmp/JPxxCM_List \
                                 ../JPxxCM/tmp/JPxxCM_VQ \
				 ../JPxxCM/tmp/JPxxCM_Get_Local_Inet_Adrs \
                                 ../JPxxCD/tmp/JPxxCD \
                                 ../JPxxCD/tmp/JPxxCD_Util
            TYPE_libJP_JCOMLIB = shared-library
             CPU_libJP_JCOMLIB = sun
../JPxxCM/tmp/JPxxCM_Get_Local_Inet_Adrs.sun.o := CC.sun = cc
../JPxxCM/tmp/JPxxCM_Get_Local_Inet_Adrs.sun.o := PROJ.sun.CFLAGS = 
../JPxxCM/tmp/JPxxCM_Get_Local_Inet_Adrs.sun.o := PROJ.sun.CPPFLAGS = \
  -DJP_PROJECT_$(PROJ_SYSTEM) -DCPU_SUN -DSRC_FILE=$(@:%.sun.o=%) -DE_32="enum"


            DATA_libJP_JCOM68K = JPxxC_JEXTVAR_External_Variables
            OBJS_libJP_JCOM68K = ../JPxxCM/tmp/JPxxCM \
                                 ../JPxxCM/tmp/JPxxCM_Util \
                                 ../JPxxCM/tmp/JPxxCM_List \
                                 ../JPxxCM/tmp/JPxxCM_VQ \
                                 ../JPxxCM/tmp/qsort \
                                 ../JPxxCM/tmp/JPxxCM_040_860_Receive \
                                 ../JPxxCM/tmp/bsearch \
                                 ../JPxxCD/tmp/JPxxCD \
                                 ../JPxxCD/tmp/JPxxCD_Util \
				 ../JPxxCM/tmp/JPxxCM_Init \
				 ../JPxxCM/tmp/JPxxCM_Close \
				 ../JPxxCM/tmp/JPxxCM_Remote_Receive \
				 ../JPxxCM/tmp/JPxxCM_Remote_Send \
				 ../JPxxCM/tmp/JPxxCM_Get_Local_Inet_Adrs \
                                 ../JPxxCM/tmp/JPxxCM_860_Comm_Util \
                                 ../JPxxCM/tmp/JPxxCM_860_Process_Table
            TYPE_libJP_JCOM68K = executable
             CPU_libJP_JCOM68K = 68k
libJP_JCOM68K.68k := CPPFLAGS += -I/usr/vw/h/68k -I/usr/vw/h \
                                 -I/usr/vw/h/drv -I/usr/mc860/os/include


OBJS_libJP_JCOM860 =  ../JPxxCM/tmp/JPxxCM_860_Comm_Util \
                      ../JPxxCM/tmp/JPxxCM_860_Process_Table \
                      ../JPxxCM/tmp/JPxxCM_860_Map_Ext_Mem \
                      ../JPxxCM/tmp/JPxxCM_860 \
                      ../JPxxCD/tmp/JPxxCD_860_Create_Pool \
                      ../JPxxCD/tmp/JPxxCD \
                      ../JPxxCD/tmp/JPxxCD_Util \
                      ../JPxxCM/tmp/JPxxCM \
                      ../JPxxCM/tmp/JPxxCM_Util \
                      ../JPxxCM/tmp/JPxxCM_List \
                      ../JPxxCM/tmp/JPxxCM_VQ
TYPE_libJP_JCOM860 = library
CPU_libJP_JCOM860 = 860


            OBJS_JPxxCM_Init = ../JPxxCM/tmp/JPxxCM_Init
            TYPE_JPxxCM_Init = executable
             CPU_JPxxCM_Init = sun
JPxxCM_Init.sun := LIBRARIES_JPxxCM_Init += \
  $(MakeCWD)/libJP_JCOMLIB.sun.sa.1.1 $(MakeCWD)/libJP_JCOMLIB.sun.so.1.1 

            OBJS_JPxxCM_Close = ../JPxxCM/tmp/JPxxCM_Close
            TYPE_JPxxCM_Close = executable
             CPU_JPxxCM_Close = sun
JPxxCM_Close.sun := LIBRARIES_JPxxCM_Close += \
  $(MakeCWD)/libJP_JCOMLIB.sun.sa.1.1 $(MakeCWD)/libJP_JCOMLIB.sun.so.1.1

            OBJS_JPxxCM_Remote_Receive = ../JPxxCM/tmp/JPxxCM_Remote_Receive
            TYPE_JPxxCM_Remote_Receive = executable
             CPU_JPxxCM_Remote_Receive = sun
JPxxCM_Remote_Receive.sun := LIBRARIES_JPxxCM_Remote_Receive += \
  $(JPRR)/JPx/JPxx/JPxxC/JPxxCT/tmp/JPxxCT.sun.a \
  $(JPRR)/JPx/JPxx/JPxxS/JPxxST/tmp/JPxxST.sun.a \
  $(MakeCWD)/libJP_JCOMLIB.sun.so.1.1 $(MakeCWD)/libJP_JCOMLIB.sun.sa.1.1

            OBJS_JPxxCM_Remote_Send = ../JPxxCM/tmp/JPxxCM_Remote_Send
            TYPE_JPxxCM_Remote_Send = executable
             CPU_JPxxCM_Remote_Send = sun
JPxxCM_Remote_Send.sun := LIBRARIES_JPxxCM_Remote_Send += \
  $(JPRR)/JPx/JPxx/JPxxC/JPxxCT/tmp/JPxxCT.sun.a \
  $(JPRR)/JPx/JPxx/JPxxS/JPxxST/tmp/JPxxST.sun.a \
  $(MakeCWD)/libJP_JCOMLIB.sun.so.1.1 $(MakeCWD)/libJP_JCOMLIB.sun.sa.1.1


 OBJS_JPxxCM_860_Receive = ../JPxxCM/tmp/JPxxCM_860_Receive  
 TYPE_JPxxCM_860_Receive = executable
 CPU_JPxxCM_860_Receive = 860
JPxxCM_860_Receive.860 := LIBRARIES_JPxxCM_860_Receive += \
  $(MakeCWD)/libJP_JCOM860.860.a

 OBJS_JPxxCM_860_Comm_ISR = ../JPxxCM/tmp/JPxxCM_860_Comm_ISR
 TYPE_JPxxCM_860_Comm_ISR = executable
 CPU_JPxxCM_860_Comm_ISR = 860
JPxxCM_860_Comm_ISR.860 := LIBRARIES_JPxxCM_860_Comm_ISR += \
  $(MakeCWD)/libJP_JCOM860.860.a
---------------------------  End Sample ------------------------------------

-- 

Eric L. Schott,    HRB Systems, Inc.    814/238-4311     els@icf.hrb.com
  "As we acquire more knowledge, things do not become more comprehensible
   but more mysterious."                  Albert Schweitzer, "Paris Notes"

begin 664 make.tar.Z
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
E>+T/G#V;!?<[K,TQNH_?II;PN%JM;FXPT]D^R,;>3,H6I5-J!\ZE
 
end