123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- #*****************************************************************************
- #
- #
- #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.8y-vxWorks6.3/include
- OPENSSL_LIB := D:/libraries/openssl/openssl-0.9.8y-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.
|