mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2026-02-20 03:01:32 +01:00
207 lines
6 KiB
Makefile
Executable file
207 lines
6 KiB
Makefile
Executable file
#
|
|
# Copyright (c) 2023 Genexis B.V. All rights reserved.
|
|
# This Software and its content are protected by the Dutch Copyright Act
|
|
# ('Auteurswet'). All and any copying and distribution of the software
|
|
# and its content without authorization by Genexis B.V. is
|
|
# prohibited. The prohibition includes every form of reproduction and
|
|
# distribution.
|
|
#
|
|
#
|
|
|
|
include $(TOPDIR)/rules.mk
|
|
|
|
PKG_NAME:=dm-framework
|
|
PKG_VERSION:=1.0.0
|
|
PKG_RELEASE:=1
|
|
|
|
PKG_SOURCE_PROTO:=git
|
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/lcm/dm-framework.git
|
|
PKG_SOURCE_VERSION:=37dade4a2df6eaf6a4291a06ac776641ed81a79e
|
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
|
PKG_MIRROR_HASH:=skip
|
|
|
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
|
|
|
# Build directories for each component
|
|
DATAMODELS_BUILD_DIR:=$(PKG_BUILD_DIR)/datamodels-build
|
|
DMAPI_BUILD_DIR:=$(PKG_BUILD_DIR)/dm-api-build
|
|
DMAGENT_BUILD_DIR:=$(PKG_BUILD_DIR)/dm-agent-build
|
|
|
|
include $(INCLUDE_DIR)/package.mk
|
|
-include $(TOPDIR)/feeds/iopsys/bbfdm/bbfdm.mk
|
|
|
|
#
|
|
# Datamodels Package Definition
|
|
#
|
|
define Package/datamodels
|
|
SECTION:=utils
|
|
CATEGORY:=Genexis
|
|
TITLE:=dm-framework Datamodel
|
|
URL:=http://www.genexis.eu
|
|
PKG_LICENSE:=GENEXIS
|
|
PKG_LICENSE_URL:=
|
|
endef
|
|
|
|
define Package/datamodels/description
|
|
This package contains dm-framework datamodel.
|
|
endef
|
|
|
|
#
|
|
# DM-API Package Definition
|
|
#
|
|
define Package/dm-api
|
|
CATEGORY:=Genexis
|
|
TITLE:=dm-api
|
|
PKG_BUILD_DEPENDS:=datamodels
|
|
DEPENDS:=+libsqlite3 \
|
|
+libjson-c +libstdcpp +quickjs \
|
|
+libubus +libubox +libuci
|
|
URL:=http://www.genexis.eu
|
|
PKG_LICENSE:=GENEXIS
|
|
PKG_LICENSE_URL:=
|
|
endef
|
|
|
|
define Package/dm-api/description
|
|
This package contains api for the dm-framework
|
|
endef
|
|
|
|
#
|
|
# DM-Agent Package Definition
|
|
#
|
|
define Package/dm-agent
|
|
DEPENDS:=+dm-api +datamodels +libubox +libubus +ubus
|
|
CATEGORY:=Genexis
|
|
TITLE:=dm-framework agent
|
|
URL:=http://www.genexis.eu
|
|
PKG_LICENSE:=GENEXIS
|
|
PKG_LICENSE_URL:=
|
|
endef
|
|
|
|
define Package/dm-agent/description
|
|
This package contains dm-framework agent.
|
|
endef
|
|
|
|
#
|
|
# Build Preparation
|
|
#
|
|
define Build/Prepare
|
|
$(call Build/Prepare/Default)
|
|
|
|
# Prepare datamodels
|
|
mkdir -p $(DATAMODELS_BUILD_DIR)
|
|
$(CP) -rf $(PKG_BUILD_DIR)/datamodels/* $(DATAMODELS_BUILD_DIR)/
|
|
# Copy scripts from top-level scripts directory
|
|
mkdir -p $(DATAMODELS_BUILD_DIR)/scripts
|
|
$(CP) -rf $(PKG_BUILD_DIR)/scripts/* $(DATAMODELS_BUILD_DIR)/scripts/
|
|
cd $(DATAMODELS_BUILD_DIR); \
|
|
npm install better-sqlite3 quickjs && \
|
|
node ./scripts/json2code.js && \
|
|
node ./scripts/qjs-handlers-validate.js
|
|
|
|
# Prepare dm-api
|
|
mkdir -p $(DMAPI_BUILD_DIR)
|
|
$(CP) -rf $(PKG_BUILD_DIR)/dm-api/* $(DMAPI_BUILD_DIR)/
|
|
|
|
# Prepare dm-agent
|
|
mkdir -p $(DMAGENT_BUILD_DIR)
|
|
$(CP) -rf $(PKG_BUILD_DIR)/dm-agent/* $(DMAGENT_BUILD_DIR)/
|
|
endef
|
|
|
|
TARGET_CFLAGS += $(FPIC)
|
|
|
|
#
|
|
# Build Compilation
|
|
#
|
|
define Build/Compile
|
|
# Build datamodels first (dependency for others)
|
|
$(MAKE) -C $(DATAMODELS_BUILD_DIR)\
|
|
PROJECT_ROOT="$(DATAMODELS_BUILD_DIR)" \
|
|
CROSS_COMPILE="$(TARGET_CROSS)" \
|
|
ARCH="$(LINUX_KARCH)" \
|
|
EXTRA_CFLAGS="$(TARGET_CFLAGS) -I$(DATAMODELS_BUILD_DIR)" \
|
|
all
|
|
|
|
# Build dm-api (depends on datamodels)
|
|
$(MAKE) -C $(DMAPI_BUILD_DIR)\
|
|
PROJECT_ROOT="$(DMAPI_BUILD_DIR)" \
|
|
CROSS_COMPILE="$(TARGET_CROSS)" \
|
|
ARCH="$(LINUX_KARCH)" \
|
|
EXTRA_CFLAGS="$(TARGET_CFLAGS) -I$(DMAPI_BUILD_DIR)" \
|
|
all
|
|
|
|
# Build dm-agent (depends on both)
|
|
$(MAKE) -C $(DMAGENT_BUILD_DIR)\
|
|
PROJECT_ROOT="$(DMAGENT_BUILD_DIR)" \
|
|
CROSS_COMPILE="$(TARGET_CROSS)" \
|
|
ARCH="$(LINUX_KARCH)" \
|
|
EXTRA_CFLAGS="$(TARGET_CFLAGS) -I$(DMAGENT_BUILD_DIR)" \
|
|
all
|
|
endef
|
|
|
|
#
|
|
# Development Installation (headers and libraries)
|
|
#
|
|
define Build/InstallDev
|
|
# Datamodels development files
|
|
$(INSTALL_DIR) $(1)/usr/include
|
|
$(INSTALL_DIR) $(1)/usr/lib
|
|
$(CP) $(DATAMODELS_BUILD_DIR)/dm.h $(1)/usr/include/
|
|
$(CP) $(DATAMODELS_BUILD_DIR)/libdm.so $(1)/usr/lib/
|
|
|
|
# DM-API development files - headers are now in dm-api/include/
|
|
$(CP) $(DMAPI_BUILD_DIR)/include/dm_types.h $(1)/usr/include/
|
|
$(CP) $(DMAPI_BUILD_DIR)/include/dm_node.h $(1)/usr/include/
|
|
$(CP) $(DMAPI_BUILD_DIR)/core/dm_api.h $(1)/usr/include/
|
|
$(CP) $(DMAPI_BUILD_DIR)/core/dm_linker.h $(1)/usr/include/
|
|
$(CP) $(DMAPI_BUILD_DIR)/core/dbmgr.h $(1)/usr/include/
|
|
$(CP) $(DMAPI_BUILD_DIR)/include/dm_log.h $(1)/usr/include/
|
|
$(CP) $(DMAPI_BUILD_DIR)/utils/dm_list.h $(1)/usr/include/
|
|
$(CP) $(DMAPI_BUILD_DIR)/libdmapi.so $(1)/usr/lib/
|
|
endef
|
|
|
|
#
|
|
# Package Installation - Datamodels
|
|
#
|
|
define Package/datamodels/install
|
|
$(INSTALL_DIR) $(1)/usr/lib
|
|
$(INSTALL_DIR) $(1)/etc/config
|
|
$(INSTALL_DIR) $(1)/etc/bbfdm
|
|
$(INSTALL_DIR) $(1)/usr/lib/dmf_handlers
|
|
$(INSTALL_BIN) $(DATAMODELS_BUILD_DIR)/default.db $(1)/etc/bbfdm/default_dm.db
|
|
$(INSTALL_BIN) $(DATAMODELS_BUILD_DIR)/libdm.so $(1)/usr/lib/
|
|
# Copy handler files from datamodels directory (new structure)
|
|
# Copy .js files from root datamodels directory
|
|
( cd $(DATAMODELS_BUILD_DIR); \
|
|
find . -maxdepth 1 -type f -name '*.js' -not -path './.*' -exec $(INSTALL_BIN) {} $(1)/usr/lib/dmf_handlers/{} \; )
|
|
# Copy .js files from subdirectories, preserving folder structure (skip hidden files/folders)
|
|
( cd $(DATAMODELS_BUILD_DIR); \
|
|
find . -type d -mindepth 1 -not -path './.*' -not -path './scripts*' -exec $(INSTALL_DIR) $(1)/usr/lib/dmf_handlers/{} \; ; \
|
|
find . -type f -name '*.js' -mindepth 2 -not -path './.*' -not -path './scripts*' -exec $(INSTALL_BIN) {} $(1)/usr/lib/dmf_handlers/{} \; )
|
|
endef
|
|
|
|
#
|
|
# Package Installation - DM-API
|
|
#
|
|
define Package/dm-api/install
|
|
$(INSTALL_DIR) $(1)/usr/lib
|
|
$(INSTALL_DIR) $(1)/sbin/
|
|
$(INSTALL_BIN) $(DMAPI_BUILD_DIR)/libdmapi.so $(1)/usr/lib/
|
|
endef
|
|
|
|
#
|
|
# Package Installation - DM-Agent
|
|
#
|
|
define Package/dm-agent/install
|
|
$(INSTALL_DIR) $(1)/usr/sbin
|
|
$(INSTALL_DIR) $(1)/etc/init.d
|
|
$(INSTALL_DIR) $(1)/etc/config
|
|
$(INSTALL_BIN) ./files/etc/init.d/bridging $(1)/etc/init.d/
|
|
$(INSTALL_DATA) ./files/etc/config/bridging $(1)/etc/config/
|
|
$(BBFDM_REGISTER_SERVICES) ./bbfdm_service.json $(1) dm-agent
|
|
$(INSTALL_BIN) $(DMAGENT_BUILD_DIR)/dm-agent $(1)/usr/sbin
|
|
endef
|
|
|
|
# Register all three packages
|
|
$(eval $(call BuildPackage,datamodels))
|
|
$(eval $(call BuildPackage,dm-api))
|
|
$(eval $(call BuildPackage,dm-agent))
|