| #*************************************************************************** |
| # _ _ ____ _ |
| # Project ___| | | | _ \| | |
| # / __| | | | |_) | | |
| # | (__| |_| | _ <| |___ |
| # \___|\___/|_| \_\_____| |
| # |
| # Copyright (C) 1998 - 2020, Daniel Stenberg, <[email protected]>, et al. |
| # |
| # This software is licensed as described in the file COPYING, which |
| # you should have received as part of this distribution. The terms |
| # are also available at https://curl.se/docs/copyright.html. |
| # |
| # You may opt to use, copy, modify, merge, publish, distribute and/or sell |
| # copies of the Software, and permit persons to whom the Software is |
| # furnished to do so, under the terms of the COPYING file. |
| # |
| # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| # KIND, either express or implied. |
| # |
| ########################################################################### |
| #***************************************************************************** |
| # |
| # |
| #Filename : Makefile.vxworks |
| #Description: makefile to be used in order to compile libcurl for VxWoorks 6.3. |
| # |
| #How to use: |
| # 1. Adjust environment variables at the file beginning |
| # 2. Open the Command Prompt window and change directory ('cd') |
| # into the 'lib' folder |
| # 3. Add <CYGWIN>/bin folder to the PATH environment variable |
| # For example type 'set PATH=C:/embedded/cygwin/bin;%PATH%' |
| # 4. Build the library by typing 'make -f ./Makefile.vxworks' |
| # As a result the libcurl.a should be created in the 'lib' folder. |
| # To clean package use 'make -f ./Makefile.vxworks clean' |
| #Requirements: |
| # 1. WinXP machine |
| # 2. Full CYGWIN installation (open source) with GNU make version |
| # v3.78 or higher |
| # 3. WindRiver Workbench with vxWorks 6.3 (commercial) |
| #***************************************************************************** |
| |
| # ---------------------------------------------------------------------- |
| # Environment |
| # ---------------------------------------------------------------------- |
| |
| export WIND_HOME := C:/embedded/Workbench2.5.0.1 |
| export WIND_BASE := $(WIND_HOME)/vxworks-6.3 |
| export WIND_HOST_TYPE := x86-win32 |
| |
| # BUILD_TYE:= <debug>|<release> (build with debugging info or optimized) |
| BUILD_TYPE := debug |
| USER_CFLAGS:= |
| |
| # directories where to seek for includes and libraries |
| OPENSSL_INC := D:/libraries/openssl/openssl-0.9.8zc-vxWorks6.3/include |
| OPENSSL_LIB := D:/libraries/openssl/openssl-0.9.8zc-vxWorks6.3 |
| ZLIB_INC := D:/libraries/zlib/zlib-1.2.8-VxWorks6.3/zlib-1.2.8 |
| ZLIB_LIB := D:/libraries/zlib/zlib-1.2.8-VxWorks6.3/binaries/vxworks_3.1_gnu/Debug/lib |
| ARES_INC := |
| ARES_LIB := |
| |
| |
| # ---------------------------------------------------------------------- |
| # Compiler |
| # ---------------------------------------------------------------------- |
| |
| CC := ccppc |
| AR := arppc |
| LINK := ccppc |
| CFLAGS := -D__GNUC__ -D__ppc__ -msoft-float -fno-builtin -mcpu=604 -mlongcall -DCPU=PPC604 -D_GNU_TOOL -Wall -W -Winline $(USER_CFLAGS) |
| LDFLAGS := -nostdlib -Wl,-i -Wl,-X |
| INCLUDE_FLAG := -I |
| C_DEBUGFLAG := -g |
| C_OPTFLAG := -O2 |
| COMPILE_ONLY_FLAG := -c |
| OBJ_EXTENSION := .o |
| CC_OBJ_OUTPUT = -o $@ |
| ARFLAGS := -rc |
| LIBS_FLAG := -l |
| LIBS_DIRFLAG:= -L |
| LD_DEBUGFLAG := $(C_DEBUGFLAG) |
| EXECUTE_EXTENSION := .out |
| TOOL_CHAIN_BIN := $(WIND_HOME)/gnu/3.4.4-vxworks-6.3/$(WIND_HOST_TYPE)/bin/ |
| |
| # ---------------------------------------------------------------------- |
| |
| # Add -DINET6 if the OS kernel image was built with IPv6 support |
| # CFLAGS += -DINET6 |
| |
| # Set up compiler and linker flags for debug or optimization |
| ifeq ($(BUILD_TYPE), debug) |
| CFLAGS += $(C_DEBUGFLAG) |
| LDFLAGS += $(LD_DEBUGFLAG) |
| else |
| CFLAGS += $(C_OPTFLAG) |
| endif |
| |
| # ---------------------------------------------------------------------- |
| |
| # Main Makefile and possible sub-make files |
| MAKEFILES := Makefile.vxworks |
| |
| # List of external include directories |
| #----- |
| # IMPORTANT: include OPENSSL directories before system |
| # in order to prevent WindRiver OpenSSL to be used. |
| #----- |
| INCLUDE_DIRS := ../include $(OPENSSL_INC) $(ZLIB_INC) $(ARES_INC) $(WIND_BASE)/target/h $(WIND_BASE)/target/h/wrn/coreip |
| |
| # List of external libraries and their directories |
| LIBS_LIST := . |
| LIB_DIRS := . |
| ifneq ($(OPENSSL_LIB), ) |
| LIBS_LIST += crypto ssl |
| LIB_DIRS += $(OPENSSL_LIB) |
| endif |
| ifneq ($(ZLIB_LIB), ) |
| LIBS_LIST += z |
| LIB_DIRS += $(ZLIB_LIB) |
| endif |
| ifneq ($(ARES_LIB), ) |
| LIBS_LIST += ares |
| LIB_DIRS += $(ARES_LIB) |
| endif |
| |
| # Add include and library directories and libraries |
| CFLAGS += $(INCLUDE_DIRS:%=$(INCLUDE_FLAG)%) |
| LDFLAGS += $(LIB_DIRS:%=$(LIBS_DIRFLAG)%) |
| |
| # List of targets to make for libs target |
| LIBS_TARGET_LIST := libcurl.a |
| |
| # List of execuatble applications to make in addition to libs for all target |
| EXE_TARGET_LIST := |
| |
| # Support for echoing rules |
| # If ECHORULES variable was set (for example, using 'make' command line) |
| # some shell commands in the rules will be echoed |
| ifneq ($(strip $(findstring $(ECHORULES), yes YES 1 true TRUE)),) |
| _@_ := |
| else |
| _@_ := @ |
| endif |
| |
| # Directory to hold compilation intermediate files |
| TMP_DIR := tmp |
| |
| # Get sources and headers to be compiled |
| include Makefile.inc |
| |
| # List of headers |
| INCLUDE_FILES := $(HHEADERS) |
| INCLUDE_FILES += $(shell find ../include -name \*.h) |
| |
| # List of sources |
| OBJLIST := $(CSOURCES:%.c=$(TMP_DIR)/%$(OBJ_EXTENSION)) |
| |
| |
| # ---------------------------------------------------------------------- |
| |
| #### default rule |
| # It should be first rule in this file |
| .PHONY: default |
| default: libcurl.a |
| |
| #### Compiling C files |
| $(TMP_DIR)/%$(OBJ_EXTENSION): %.c $(MAKEFILES) |
| @echo Compiling C file $< $(ECHO_STDOUT) |
| @[ -d $(@D) ] || mkdir -p $(@D) |
| $(_@_) $(TOOL_CHAIN_BIN)$(CC) $(COMPILE_ONLY_FLAG) $(CFLAGS) $< $(CC_OBJ_OUTPUT) |
| |
| #### Creating library |
| $(LIBS_TARGET_LIST): $(INCLUDE_FILES) $(MAKEFILES) $(OBJLIST) |
| @echo Creating library $@ $(ECHO_STDOUT) |
| $(_@_) [ -d $(@D) ] || mkdir -p $(@D) |
| $(_@_) rm -f $@ |
| $(_@_) $(TOOL_CHAIN_BIN)$(AR) $(ARFLAGS) $@ $(filter %$(OBJ_EXTENSION), $^) |
| |
| #### Creating application |
| $(EXE_TARGET_LIST): $(INCLUDE_FILES) $(MAKEFILES) $(LIBS_TARGET_LIST) |
| @echo Creating application $@ |
| @[ -d $(@D) ] || mkdir -p $(@D) |
| $(_@_) $(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) |
| |
| #### Master Targets |
| libs: $(LIBS_TARGET_LIST) |
| @echo All libs made. |
| |
| all: $(LIBS_TARGET_LIST) $(EXE_TARGET_LIST) $(INCLUDE_TARGET_LIST) |
| @echo All targets made. |
| |
| # Clean up |
| .PHONY: clean |
| clean: |
| $(_@_) rm -rf $(TMP_DIR) |
| @echo libcurl was cleaned. |