Search code examples
makefilebuildroot

Buidling a new package for buildroot: hub-ctrl


I'm trying to build a new package for using in buildroot this useful program to power on/off the different USB ports from the raspberry pi.

The GIT repository is on this site:

https://github.com/codazoda/hub-ctrl.c

And this is the hub-ctrl.mk I've built:

################################################################################
#
# hub-ctrl
#
################################################################################

HUB_CTRL_VERSION = 42095e522859059e8a5f4ec05c1e3def01a870a9
HUB_CTRL_SITE = https://github.com/codazoda/hub-ctrl.c
HUB_CTRL_SITE_METHOD = git
HUB_CTRL_LICENSE = GPLv2+

define HUB_CTRL_BUILD_CMDS
    $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)
endef

define HUB_CTRL_INSTALL_TARGET_CMDS
    # Install predictead application
    $(INSTALL) -m 4755 -D $(@D)/hub-ctrl $(TARGET_DIR)/usr/sbin/hub-ctrl;
endef

$(eval $(generic-package))

Up to now, everything is ok. But I realize that the repository it doesn't have a Makefile, so I decided to build one on my own, but I have errors. I don't know how to link the include and library folder. I'm not an expert building makefiles so I need some help. This is my Makefile:

PROJECT_ROOT = .
OUTDIR = $(PROJECT_ROOT)/bin
BASE_NAME = hub-ctrl
NAME = $(BASE_NAME)$(D)
OBJ = $(BASE_NAME).o
INC = 
LIBS = -lusb
MKDIR = mkdir -p
MV = mv

# Master rule
.PHONY: all
all: $(NAME)

# Output binary
$(NAME): $(OBJ)
    $(CC) $(CFLAGS) $(INC) $(OBJ) -o $(BASE_NAME) $(LIBS)
    -@$(MV) $(BASE_NAME) $(OUTDIR)/$(BASE_NAME)
    rm *.o

# Intermediate object files
$(OBJ): %.o: %.c
    @$(MKDIR) $(OUTDIR)
    $(CC) $(CFLAGS) $(LIBS) $(INC) -c $<

# Cleanup intermediate objects
.PHONY: clean_obj
clean_obj:
    rm -f $(OBJ)
    @echo "obj cleaned up!"

# Cleanup everything
.PHONY: clean
clean: clean_obj
    rm -rf $(OUTDIR)/$(BASE_NAME)
    @echo "all cleaned up!"

This is the error I've got:

hub-ctrl.c:12:17: fatal error: usb.h: No such file or directory #include ^ compilation terminated.

Any suggestion?

Best regards.


Solution

  • I've followed the indications of Peter Korsgaard. I'm using the package uhubctl from buildroot-2017.11-rc1 and I've added this package to my buildroot-2016.02 custom platform. Everything is working fine, and I'm able to power off the usb ports in my HW platform.

    Thank you very much to Peter Korsgaard for his advice.