Makefile 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #
  2. # Copyright 2019 Cypress Semiconductor Corporation
  3. # SPDX-License-Identifier: Apache-2.0
  4. #
  5. # Licensed under the Apache License, Version 2.0 (the "License");
  6. # you may not use this file except in compliance with the License.
  7. # You may obtain a copy of the License at
  8. #
  9. # http://www.apache.org/licenses/LICENSE-2.0
  10. #
  11. # Unless required by applicable law or agreed to in writing, software
  12. # distributed under the License is distributed on an "AS IS" BASIS,
  13. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. # See the License for the specific language governing permissions and
  15. # limitations under the License.
  16. #
  17. print-% : ; @echo $* = $($*)
  18. # Use VERBOSE=1 to get full output
  19. ifneq ($(VERBOSE),1)
  20. QUIET:=@
  21. else
  22. QUIET:=
  23. endif
  24. ifeq ($(OS),Windows_NT)
  25. HOST_OS := Win32
  26. else ifeq ($(shell uname -s),Linux)
  27. HOST_OS := Linux
  28. ifeq ($(shell uname -p),x86_64)
  29. HOST_OS := $(HOST_OS)64
  30. else
  31. HOST_OS := $(HOST_OS)32
  32. endif
  33. endif
  34. ifeq ($(ARMCC),1)
  35. TOOLCHAIN_NAME := ARMCC
  36. endif
  37. ifeq ($(IAR),1)
  38. TOOLCHAIN_NAME := IAR
  39. endif
  40. #Set the default; Only win32 and arm_gnu supported for now
  41. TOOLCHAIN_NAME ?= GCC
  42. HAL_DIRS := External/hal
  43. HAL_DIRS += External/rtos
  44. HAL_DIRS += External/bsp
  45. INC_DIRS := . WiFi_Host_Driver/src WiFi_Host_Driver/src/include
  46. INC_DIRS += WiFi_Host_Driver/inc
  47. INC_DIRS += $(HAL_DIRS)
  48. INC_FLAGS := $(addprefix -I,$(INC_DIRS))
  49. LDFLAGS :=
  50. ifeq ($(TOOLCHAIN_NAME),GCC)
  51. COMPILER_FLAGS := -Wall -Wmisleading-indentation -Wnarrowing -Wsign-compare -fsigned-char -ffunction-sections -fdata-sections -fno-common -std=gnu11 -fdiagnostics-color -Werror -DNDEBUG -ggdb -O2 -mthumb -mcpu=cortex-m4 -mlittle-endian
  52. COMPILER_SPECIFIC_ARFLAGS_CREATE := -rcs
  53. LDFLAGS := -specs=nosys.specs -Wl,-Map,$(BUILD_FOLDER)/whd.map
  54. DEP_FLAGS := -MMD
  55. else ifeq ($(TOOLCHAIN_NAME),ARMCC)
  56. COMPILER_FLAGS := --target=arm-arm-none-eabi -march=armv8-m.main -mfpu=fpv4-sp-d16 -Wall -Wnarrowing -Wsign-compare -fsigned-char -ffunction-sections -fdata-sections -fno-common -std=gnu11 -fdiagnostics-color -Werror -DNDEBUG -ggdb -O2 -mthumb -mcpu=cortex-m4 -mlittle-endian -fshort-enums
  57. COMPILER_SPECIFIC_ARFLAGS_CREATE := -rcs
  58. DEP_FLAGS := -MMD
  59. else ifeq ($(TOOLCHAIN_NAME),IAR)
  60. COMPILER_FLAGS := --silent --char_is_signed -e --vla --dlib_config full -DNDEBUG --debug -Oh --cpu_mode thumb --cpu Cortex-M4 --endian little --warnings_are_errors --require_prototypes
  61. COMPILER_SPECIFIC_ARFLAGS_CREATE := --create -o
  62. DEP_FLAGS := --dependencies=m +
  63. LDFLAGS := --silent
  64. endif
  65. ifeq ($(TOOLCHAIN_NAME),GCC)
  66. CC := "$(TOOLCHAIN_PATH)arm-none-eabi-gcc"
  67. #LD := "$(TOOLCHAIN_PATH)arm-none-eabi-g++"
  68. AR := "$(TOOLCHAIN_PATH)arm-none-eabi-ar"
  69. else ifeq ($(TOOLCHAIN_NAME),ARMCC)
  70. CC := $(TOOLCHAIN_PATH)armclang
  71. #LD := $(TOOLCHAIN_PATH)armlink
  72. AR := $(TOOLCHAIN_PATH)armar
  73. else ifeq ($(TOOLCHAIN_NAME),IAR)
  74. CC := $(TOOLCHAIN_PATH)iccarm
  75. #LD := $(TOOLCHAIN_PATH)ilinkarm
  76. AR := $(TOOLCHAIN_PATH)iarchive
  77. endif
  78. BUILD_FOLDER := build/whd
  79. MKDIR = mkdir -p $1
  80. rwildcard=$(wildcard $(addsuffix $2, $1)) $(foreach d,$(wildcard $(addsuffix *, $1)),$(call rwildcard,$d/,$2))
  81. SRC_FOLDER := WiFi_Host_Driver/src/
  82. SRC := $(filter %.c,$(call rwildcard,$(SRC_FOLDER),*.c))
  83. OBJ := $(patsubst %.c,%.o, $(SRC))
  84. OBJS = $(addprefix $(BUILD_FOLDER)/,$(OBJ))
  85. CFLAGS := $(COMPILER_FLAGS) $(DEP_FLAGS) $(INC_FLAGS) $(EXTRA_FLAGS)
  86. ###################### Set the make variable ###########################################
  87. $(BUILD_FOLDER)/libwhd.a : $(OBJS)
  88. @echo Archiving $@
  89. $(QUIET)$(AR) $(COMPILER_SPECIFIC_ARFLAGS_CREATE) $(BUILD_FOLDER)/libwhd.a $(OBJS)
  90. $(BUILD_FOLDER)/%.o : %.c
  91. @echo Compiling $<
  92. $(QUIET)$(call MKDIR, $(@D))
  93. @echo $(CC) $(CFLAGS) -o $@ -c $< > $@.opts
  94. $(QUIET)$(CC) $(CFLAGS) -o $@ -c $<
  95. DEPS := $(OBJS:%.o=%.d)
  96. -include $(DEPS)
  97. clean :
  98. @echo Removing build/whd
  99. -$(QUIET)$(RM) -r build/whd
  100. .PHONY: all clean