Annotation of embedaddon/curl/lib/Makefile.vxworks, revision 1.1.1.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>