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.8zc-vxWorks6.3/include
|
---|
37 | OPENSSL_LIB := D:/libraries/openssl/openssl-0.9.8zc-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.
|
---|