Problem with a Makefile

Hi, I am very new with makefile topics , maybe this is a very symple question...
I have this code wich compile very good ( I get it from the net), I will call it code A.
I have to add it with a program that is all ready in use, (code B) that also compile good. When I put together it doesnt compile anymore. The problem is that I have to use the makefile of the code B, wich have in this line:
PACKDEFS = -I$(CMX_AUTO_INCLUDE) -I$(CMX_USER_INCLUDE) -Aa

If I remove the instruction -Aa ( I think is used to ansi C) my code A compiles, but the code B doesnt.

I dont know how to do it since I need both codes works together.

Code A:

/* tcpclient.c */

#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>


int main()

{

        int sock, bytes_recieved;  
        char send_data[1024],recv_data[1024];
        struct hostent *host;
        struct sockaddr_in server_addr;  

		char header[15];

        host = gethostbyname("prueba");
		if ( host==NULL)
		{
		 printf (" no encuentro la direccion \n");
		}
		printf ("la direecion es %s  \n", host->h_addr_list );
			 printf("\n eNTRando en acCCioN...\n ");
        if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
            perror("Socket");
            exit(1);
        }

        server_addr.sin_family = AF_INET;     
        server_addr.sin_port = htons(5000);   
        server_addr.sin_addr = *((struct in_addr *)host->h_addr);
        bzero(&(server_addr.sin_zero),8); 
		
        if (connect(sock, (struct sockaddr *)&server_addr,
                    sizeof(struct sockaddr)) == -1) 
        {
            perror("Connect");
            exit(1);
        }

        while(1)
        {
          

		  printf("\n ES hora de mandar datos.. que desea enviar? (q or Q to quit) : ");
          gets(header);
				send_data[0]= 0x02;
				send_data[1]= 0x07;
				send_data[2]= 0x31;
				send_data[3]= 0x31;
				send_data[4]= 0x17;

			strcat (send_data,header);
				header[0]= 0x05;
				header[1]= '\0';
				strcat (send_data,header);
		  if (strcmp(send_data , "q") == 0 || strcmp(send_data , "Q") == 0)
              {
                send(sock, send_data,strlen(send_data), 0); 
                close(sock);
                break;
              }
               
              else
                 send(sock, send_data,strlen(send_data), 0);  

          bytes_recieved=recv(sock,recv_data,1024,0);
          recv_data[bytes_recieved] = '\0';
 
          if (strcmp(recv_data , "q") == 0 || strcmp(recv_data , "Q") == 0)
          {
           close(sock);
           break;
          }

          else
           printf("\nRecieved data = %s " , recv_data);
           
           printf("\nSEND (q or Q to quit) : ");
           gets(send_data);
           
          if (strcmp(send_data , "q") != 0 && strcmp(send_data , "Q") != 0)
           send(sock,send_data,strlen(send_data), 0); 

          else
          {
           send(sock,send_data,strlen(send_data), 0);   
           close(sock);
           break;
          }
        
        }   
return 0;
}

Compiling error:

ulcmx1:oasys:prueba> make new
--- Completed TARGET=clean:/usr/oasys/V5.2.2/source/project/simcot/prueba./HP/
--- Completed TARGET=depend:/usr/oasys/V5.2.2/source/project/simcot/prueba
Lib
--- Completed TARGET=LIB:/usr/oasys/V5.2.2/source/project/simcot/prueba
        cc  -c -DHP -DSYSTEM_10 +u4 -DSAMMI3 -I/usr/oasys/V5.2.2/source/include/auto/HP -I/usr/oasys/V5.2.2/source/include/user -Aa tcp.c -o ./HP/tcp.o
cc: "tcp.c", line 29: error 1574: Unknown size for "server".
cc: "tcp.c", line 30: error 1594: The sizeof operator cannot be applied to types with unknown size.
cc: "tcp.c", line 50: error 1588: "AF_INET" undefined.
cc: "tcp.c", line 50: error 1588: "SOCK_STREAM" undefined.
cc: "tcp.c", line 68: error 1530: Undefined struct or union.
cc: "tcp.c", line 73: error 1530: Undefined struct or union.
cc: "tcp.c", line 73: error 1529: Cannot select field of non-structure.
cc: "tcp.c", line 73: error 1588: "INADDR_ANY" undefined.
*** Error exit code 1

I wont put code B because it is long.
Thanks

Makefiles are a programming language in their own right, and PACKDEFS is just a variable. Without seeing the makefile entire, we really can't guess what it's doing with PACKDEFS.

Here is the makefile of the CODE B:

### SccsId[] = "@(#)Makefile 1.1 11/06/98"
#!/bin/sh
#
# Include the macro definition file
#
include $(MAKE_DIR)/$(MACHINE)/make.macro

#
#---------------------------START HERE------------------------------------
#
# a: Use the default definition "NO_SUB_DIR", if there is no subdirectories.
# otherwise add all the required subdirectory names in SUBDIRS.
# example:
# (1)SUBDIRS = dbll cmxlib cpulib
#
# Just uncomment the following line if there is no subdirectory.
#SUBDIRS = NO_SUB_DIR
#
SUBDIRS = NO_SUB_DIR

#
# b: PACKDEFS is the macro definitions, additional include file directories
# and debug flag for compilation.
# example:
# (1)PACKDEFS = -w -DSYS_V -DSTD_C -I$(SAM_INCLUDE)
# Leave it empty if it is not used.
#
# CGG: Anadido Compilacion con ANSI (para INTECHANGE)
PACKDEFS = -I$(CMX_AUTO_INCLUDE) -I$(CMX_USER_INCLUDE) -Aa

#
# c: To make a library add the library name in LIBRARIES, e.g cmxlib.a,
# cpulib.a etc, in the following lines define the contents of the library.
#
# example: (1)LIBRARIES = dblllib.a cmxlib.a
# (2)dblllib.a = dbload.o dbpath.o dbfileio.o dboutput.o \
# (3) dblist.o dbtemplate.o dbtabular.o
# (4)cmxlib.a = ...
#
# Note: Remember to put a SPACE before "=" or "\"
# Leave it undefined if there is no library in this package.
# The "lib.a =" is the key for parsing the makefile.
#
LIBRARIES =

#
# d: To make a specific program add the program name in EXECUTABLES, e.g
# dbll, swbusd etc. In the following lines define the objects for making
# the program.
# example: (1)EXECUTABLES = dbll
# (2)dbll.exe = dbll.o $(CMX_LIB) $(CMX_LIB)/dblllib.a \
# /usr/lib/libmV.a
#
# Note: Remember to put a SPACE before "=" or "\"
# Leave it undefined if there is no executable in this package.
# The ".exe =" is the keyword for parsing the makefile,
# You may have to add the system libraries, e.g. SYBASE, SAMMI, MOTIF etc.
# Besure to put the complete path for the system libraries, e.g.
# use /usr/lib/libmV.a not -lm.
#
EXECUTABLES = simacc
simacc.exe = simacc.o $(CMXLIBS) $(SYB_CLIENT) $(MACHINE_LIBS)
#
# Libreria especifica para proyecto SIMCOT:
# $(SIM_LIBS) = /usr/oasys/V5.2.2/HP/oasys/lib/simcotlib.a
#
#-----------------------STOP HERE------------------------------
# Include the makefile (make.include) and dependencies file (./_depend)
# You have to do a "touch ./_depend; make depend" if the dependencies
# file not exist.
#
include $(MAKE_DIR)/make.include
include $(OBJ_DIR)_depend

#
# END OF MAKEFILE
#

I forgot to say that simacc.exe is my code B

There's nothing in that makefile that uses PACKDEFS, it just defines it, the relevant code must be somewhere in the 3 other makefiles it includes.

Which are the other 3 makes files? I have no idea, can you give me the name so I look for it at the computer?
Any way , what do the -Aa instruccion?

### SccsId[] = "@(#)Makefile	1.1 11/06/98"
#!/bin/sh 
#
# Include the macro definition file
#
include $(MAKE_DIR)/$(MACHINE)/make.macro

<snip>

include $(MAKE_DIR)/make.include
include $(OBJ_DIR)_depend

#
# END OF MAKEFILE
#

As for what the values in PACKDEFS mean, we still can't tell without the actual code of the makefile. PACKDEFS is just a string, what -aA does depends on what you feed it into.

Finally I get the answer.
The solution is to put -Aa, -D_HPUX_SOURCE

I guess the problem come when you put the -Aa option in the Makefile, because that makes tha cc to ignore some libraries that are needed in the new code.

From the man of cc:
Requests a compilation in ANSI C mode. The -Aa option requests
a strict implementation of ANSI C. ANSI C specifies which names
are available in the standard libraries and headers, which are
reserved for the implementation, and which must be left available
for you. HP C in ANSI mode conforms to these restrictions and
only names permitted by ANSI C are defined or declared in the
standard libraries and headers. Macro definitions can be used to
access names that are normally defined in other standards

Any way thanks to the people of the forum, specially to Corona688 for the help.