Revert "Update to 7.40.1"
[platform/upstream/curl.git] / lib / Makefile.vxworks
1 #*****************************************************************************
2 #
3 #
4 #Filename   : Makefile.vxworks
5 #Description: makefile to be used in order to compile libcurl for VxWoorks 6.3.
6 #
7 #How to use:
8 #             1. Adjust environment variables at the file beginning
9 #             2. Open the Command Prompt window and change directory ('cd')
10 #                into the 'lib' folder
11 #             3. Add <CYGWIN>/bin folder to the PATH environment variable
12 #                For example type 'set PATH=C:/embedded/cygwin/bin;%PATH%'
13 #             4. Build the library by typing 'make -f ./Makefile.vxworks'
14 #             As a result the libcurl.a should be created in the 'lib' folder.
15 #             To clean package use 'make -f ./Makefile.vxworks clean'
16 #Requirements:
17 #             1. WinXP machine
18 #             2. Full CYGWIN installation (open source) with GNU make version
19 #                v3.78 or higher
20 #             3. WindRiver Workbench with vxWorks 6.3 (commercial)
21 #*****************************************************************************
22
23 # ----------------------------------------------------------------------
24 # Environment
25 # ----------------------------------------------------------------------
26
27 export WIND_HOME := C:/embedded/Workbench2.5.0.1
28 export WIND_BASE := $(WIND_HOME)/vxworks-6.3
29 export WIND_HOST_TYPE := x86-win32
30
31 # BUILD_TYE:= <debug>|<release> (build with debugging info or optimized)
32 BUILD_TYPE := debug
33 USER_CFLAGS:=
34
35 # directories where to seek for includes and libraries
36 OPENSSL_INC := D:/libraries/openssl/openssl-0.9.8y-vxWorks6.3/include
37 OPENSSL_LIB := D:/libraries/openssl/openssl-0.9.8y-vxWorks6.3
38 ZLIB_INC    := D:/libraries/zlib/zlib-1.2.8-VxWorks6.3/zlib-1.2.8
39 ZLIB_LIB    := D:/libraries/zlib/zlib-1.2.8-VxWorks6.3/binaries/vxworks_3.1_gnu/Debug/lib
40 ARES_INC    :=
41 ARES_LIB    :=
42
43
44 # ----------------------------------------------------------------------
45 # Compiler
46 # ----------------------------------------------------------------------
47
48 CC := ccppc
49 AR := arppc
50 LINK := ccppc
51 CFLAGS := -D__GNUC__ -D__ppc__ -msoft-float -fno-builtin -mcpu=604 -mlongcall -DCPU=PPC604 -D_GNU_TOOL -Wall -W -Winline $(USER_CFLAGS)
52 LDFLAGS := -nostdlib -Wl,-i -Wl,-X
53 INCLUDE_FLAG := -I
54 C_DEBUGFLAG := -g
55 C_OPTFLAG := -O2
56 COMPILE_ONLY_FLAG := -c
57 OBJ_EXTENSION := .o
58 CC_OBJ_OUTPUT = -o $@
59 ARFLAGS := -rc
60 LIBS_FLAG := -l
61 LIBS_DIRFLAG:= -L
62 LD_DEBUGFLAG := $(C_DEBUGFLAG)
63 EXECUTE_EXTENSION := .out
64 TOOL_CHAIN_BIN := $(WIND_HOME)/gnu/3.4.4-vxworks-6.3/$(WIND_HOST_TYPE)/bin/
65
66 # ----------------------------------------------------------------------
67
68 # Add -DINET6 if the OS kernel image was built with IPv6 support
69 # CFLAGS += -DINET6
70
71 # Set up compiler and linker flags for debug or optimization
72 ifeq ($(BUILD_TYPE), debug)
73 CFLAGS += $(C_DEBUGFLAG)
74 LDFLAGS += $(LD_DEBUGFLAG)
75 else
76 CFLAGS += $(C_OPTFLAG)
77 endif
78
79 # ----------------------------------------------------------------------
80
81 # Main Makefile and possible sub-make files
82 MAKEFILES := Makefile.vxworks
83
84 # List of external include directories
85 #-----
86 # IMPORTANT: include OPENSSL directories before system
87 #            in order to prevent WindRiver OpenSSL to be used.
88 #-----
89 INCLUDE_DIRS := ../include $(OPENSSL_INC) $(ZLIB_INC) $(ARES_INC) $(WIND_BASE)/target/h $(WIND_BASE)/target/h/wrn/coreip
90
91 # List of external libraries and their directories
92 LIBS_LIST := .
93 LIB_DIRS  := .
94 ifneq ($(OPENSSL_LIB), )
95 LIBS_LIST += crypto ssl
96 LIB_DIRS  += $(OPENSSL_LIB)
97 endif
98 ifneq ($(ZLIB_LIB), )
99 LIBS_LIST += z
100 LIB_DIRS  += $(ZLIB_LIB)
101 endif
102 ifneq ($(ARES_LIB), )
103 LIBS_LIST += ares
104 LIB_DIRS  += $(ARES_LIB)
105 endif
106
107 # Add include and library directories and libraries
108 CFLAGS += $(INCLUDE_DIRS:%=$(INCLUDE_FLAG)%)
109 LDFLAGS += $(LIB_DIRS:%=$(LIBS_DIRFLAG)%)
110
111 # List of targets to make for libs target
112 LIBS_TARGET_LIST := libcurl.a
113
114 # List of execuatble applications to make in addition to libs for all target
115 EXE_TARGET_LIST :=
116
117 # Support for echoing rules
118 # If ECHORULES variable was set (for example, using 'make' command line)
119 #  some shell commands in the rules will be echoed
120 ifneq ($(strip $(findstring $(ECHORULES), yes YES 1 true TRUE)),)
121 _@_ :=
122 else
123 _@_ := @
124 endif
125
126 # Directory to hold compilation intermediate files
127 TMP_DIR := tmp
128
129 # Get sources and headers to be compiled
130 include Makefile.inc
131
132 # List of headers
133 INCLUDE_FILES := $(HHEADERS)
134 INCLUDE_FILES += $(shell find ../include -name \*.h)
135
136 # List of sources
137 OBJLIST := $(CSOURCES:%.c=$(TMP_DIR)/%$(OBJ_EXTENSION))
138
139
140 # ----------------------------------------------------------------------
141
142 #### default rule
143 # It should be first rule in this file
144 .PHONY: default
145 default: libcurl.a
146
147 #### Compiling C files
148 $(TMP_DIR)/%$(OBJ_EXTENSION): %.c $(MAKEFILES)
149         @echo Compiling C file $< $(ECHO_STDOUT)
150         @[ -d $(@D) ] || mkdir -p $(@D)
151         $(_@_) $(TOOL_CHAIN_BIN)$(CC) $(COMPILE_ONLY_FLAG) $(CFLAGS) $< $(CC_OBJ_OUTPUT)
152
153 #### Creating library
154 $(LIBS_TARGET_LIST): $(INCLUDE_FILES) $(MAKEFILES) $(OBJLIST)
155         @echo Creating library $@ $(ECHO_STDOUT)
156         $(_@_) [ -d $(@D) ] || mkdir -p $(@D)
157         $(_@_) rm -f $@
158         $(_@_) $(TOOL_CHAIN_BIN)$(AR) $(ARFLAGS) $@ $(filter %$(OBJ_EXTENSION), $^)
159
160 #### Creating application
161 $(EXE_TARGET_LIST): $(INCLUDE_FILES) $(MAKEFILES) $(LIBS_TARGET_LIST)
162         @echo Creating application $@
163         @[ -d $(@D) ] || mkdir -p $(@D)
164         $(_@_) $(TOOL_CHAIN_BIN)$(LINK) $(CC_OBJ_OUTPUT) $($(@)_EXE_OBJ_LIST) $(LDFLAGS) $($(@)_EXE_LIBS_NEEDED:%=$(LIBS_FLAG)%) $(LIBS_LIST:%=$(LIBS_FLAG)%) $(USER_LIBS_LIST) $(USER_LIBS_LIST)
165
166 #### Master Targets
167 libs: $(LIBS_TARGET_LIST)
168         @echo All libs made.
169
170 all: $(LIBS_TARGET_LIST) $(EXE_TARGET_LIST) $(INCLUDE_TARGET_LIST)
171         @echo All targets made.
172
173 # Clean up
174 .PHONY: clean
175 clean:
176         $(_@_) rm -rf $(TMP_DIR)
177         @echo libcurl was cleaned.