Ryan Malloy a7f62e5d7e Add Silicon Labs CP210x manufacturing library source
- Library source from AN721SW (cp210xmanufacturing_1.0.tar.gz)
- Manufacturing tool source (cp210xsmt)
- Builds 64-bit shared library with: make LIB_ARCH=64
- Datasheets and app notes in docs/
2026-01-30 10:31:39 -07:00

127 lines
2.7 KiB
Makefile

###########################################
# Makefile for libcp210xmanufacturing
# using libusb-1.0
#
# Silicon Labs
# Modified July 11th, 2016
###########################################
# This file gets put into the source package and is used to build the actual library.
# it will produce .so and .a
LIB_ARCH?=$(shell uname -m | sed s/x86_//)
BUILD?=./build
BUILDPATH?=$(BUILD)/lib/x86_$(LIB_ARCH)
OBJPATH?=$(BUILD)/obj/x86_$(LIB_ARCH)
INSTALLPATH?=/usr/local
# required packages
PKG_CONFIG_DEPENDENCIES = libusb-1.0
# Library Variables
LIB_BASE_NAME = cp210xmanufacturing
LIB_NAME = lib$(LIB_BASE_NAME)
LIB_VER = 1.0
LIB_SOVER = 1
SONAME=$(LIB_NAME).so.$(LIB_SOVER)
LIBFULLNAME=$(LIB_NAME).so.$(LIB_VER)
LIBFULLPATH=$(BUILDPATH)/$(LIBFULLNAME)
ARCHIVE_FULL_PATH=$(BUILDPATH)/$(LIB_NAME).a
ARCHFLAG=-m$(LIB_ARCH)
PUBLICHEADERSPATH=./$(LIB_BASE_NAME)/include
# sources
CSRCS =
CPPSRCS =CP210xDevice.cpp
CPPSRCS+=CP2101Device.cpp
CPPSRCS+=CP2102Device.cpp
CPPSRCS+=CP2102NDevice.cpp
CPPSRCS+=CP2103Device.cpp
CPPSRCS+=CP2104Device.cpp
CPPSRCS+=CP2105Device.cpp
CPPSRCS+=CP2108Device.cpp
CPPSRCS+=CP2109Device.cpp
CPPSRCS+=CP210xSupportFunctions.cpp
CPPSRCS+=CP210xManufacturing.cpp
COBJS=$(CSRCS:%.c=%.o)
CPPOBJS=$(CPPSRCS:%.cpp=%.o)
OBJFILES = $(COBJS) $(CPPOBJS)
OBJFULLPATHS=$(addprefix $(OBJPATH)/, $(OBJFILES))
INCLUDES ?= -I$(PUBLICHEADERSPATH) -I./common/include/ -I./common/linux/
INCLUDES += $(foreach depcflgs,$(PKG_CONFIG_DEPENDENCIES), `pkg-config $(depcflgs) --cflags`)
LIBS += $(foreach deplib,$(PKG_CONFIG_DEPENDENCIES), `pkg-config --libs $(deplib)`)
VPATH+=$(LIB_BASE_NAME)/src
# targets: build clean install
CC ?= gcc
CFLAGS ?= -Wall -fPIC -g $(ARCHFLAG) $(INCLUDES)
CXX ?= g++
CXXFLAGS ?= -Wall -fPIC -g $(ARCHFLAG) $(INCLUDES)
AR ?= ar
ARFLAGS ?= rcs
all: $(LIBFULLPATH) $(ARCHIVE_FULL_PATH)
$(OBJPATH)/%.o: %.c
$(CC) $(CFLAGS) -c $(INCLUDES) $< -o $@
$(OBJPATH)/%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $(INCLUDES) $< -o $@
$(OBJPATH):
mkdir -p $@
$(BUILDPATH):
mkdir -p $@
$(LIBFULLPATH): $(OBJPATH) $(BUILDPATH) $(OBJFULLPATHS)
$(CXX) $(ARCHFLAG) -shared -Wl,-soname,$(SONAME) -o $@ $(OBJFULLPATHS) $(LIBS)
cd $(BUILDPATH) && \
ln -sf $(LIBFULLNAME) $(SONAME) && \
ln -sf $(SONAME) $(LIB_NAME).so
$(ARCHIVE_FULL_PATH): $(OBJFULLPATHS)
$(AR) $(ARFLAGS) $(BUILDPATH)/$(LIB_NAME).a $(OBJFULLPATHS)
debug:
echo $(OBJFULLPATHS)
clean:
rm -rf $(BUILDPATH)
rm -rf $(OBJPATH)
rm -rf $(BUILD)
install:
mkdir -p $(INSTALLPATH)/include
mkdir -p $(INSTALLPATH)/lib
cp $(PUBLICHEADERSPATH)/*.h $(INSTALLPATH)/include
cp $(LIBFULLPATH) $(INSTALLPATH)/lib
cd $(INSTALLPATH)/lib && \
ln -sf $(LIBFULLNAME) $(SONAME) && \
ln -sf $(SONAME) $(LIB_NAME).so
@echo "Installed at: "$(INSTALLPATH)
.PHONY: all clean install debug