1################################################################################
2#
3# poco
4#
5################################################################################
6
7POCO_VERSION = 1.13.2
8POCO_SITE = $(call github,pocoproject,poco,poco-$(POCO_VERSION)-release)
9POCO_LICENSE = BSL-1.0
10POCO_LICENSE_FILES = LICENSE
11POCO_CPE_ID_VENDOR = pocoproject
12POCO_INSTALL_STAGING = YES
13
14POCO_DEPENDENCIES = \
15	pcre2 \
16	zlib \
17	$(if $(BR2_PACKAGE_POCO_CRYPTO),openssl) \
18	$(if $(BR2_PACKAGE_POCO_DATA_MYSQL),mariadb) \
19	$(if $(BR2_PACKAGE_POCO_DATA_SQLITE),sqlite) \
20	$(if $(BR2_PACKAGE_POCO_DATA_PGSQL),postgresql) \
21	$(if $(BR2_PACKAGE_POCO_NETSSL_OPENSSL),openssl) \
22	$(if $(BR2_PACKAGE_POCO_XML),expat)
23
24POCO_OMIT = \
25	Data/ODBC \
26	PageCompiler \
27	$(if $(BR2_PACKAGE_POCO_ACTIVERECORD),,ActiveRecord) \
28	$(if $(BR2_PACKAGE_POCO_CPP_PARSER),,CppParser) \
29	$(if $(BR2_PACKAGE_POCO_CRYPTO),,Crypto) \
30	$(if $(BR2_PACKAGE_POCO_DATA),,Data) \
31	$(if $(BR2_PACKAGE_POCO_DATA_MYSQL),,Data/MySQL) \
32	$(if $(BR2_PACKAGE_POCO_DATA_SQLITE),,Data/SQLite) \
33	$(if $(BR2_PACKAGE_POCO_DATA_PGSQL),,Data/PostgreSQL) \
34	$(if $(BR2_PACKAGE_POCO_JSON),,JSON) \
35	$(if $(BR2_PACKAGE_POCO_JWT),,JWT) \
36	$(if $(BR2_PACKAGE_POCO_MONGODB),,MongoDB) \
37	$(if $(BR2_PACKAGE_POCO_NET),,Net) \
38	$(if $(BR2_PACKAGE_POCO_NETSSL_OPENSSL),,NetSSL_OpenSSL) \
39	$(if $(BR2_PACKAGE_POCO_PDF),,PDF) \
40	$(if $(BR2_PACKAGE_POCO_PROMETHEUS),,Prometheus) \
41	$(if $(BR2_PACKAGE_POCO_REDIS),,Redis) \
42	$(if $(BR2_PACKAGE_POCO_UTIL),,Util) \
43	$(if $(BR2_PACKAGE_POCO_XML),,XML) \
44	$(if $(BR2_PACKAGE_POCO_ZIP),,Zip)
45
46ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)
47POCO_CONF_OPTS += --no-fpenvironment --no-wstring
48endif
49
50# architectures missing some FE_* in their fenv.h
51ifeq ($(BR2_sh4a)$(BR2_nios2),y)
52POCO_CONF_OPTS += --no-fpenvironment
53endif
54
55# disable fpenvironment for soft floating point configuration
56ifeq ($(BR2_SOFT_FLOAT),y)
57POCO_CONF_OPTS += --no-fpenvironment
58endif
59
60POCO_MAKE_TARGET = shared_release
61
62POCO_LDFLAGS=$(TARGET_LDFLAGS)
63ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
64POCO_LDFLAGS += -latomic
65endif
66
67define POCO_CONFIGURE_CMDS
68	(cd $(@D); $(TARGET_MAKE_ENV) ./configure \
69		--config=Linux \
70		--prefix=/usr \
71		--ldflags="$(POCO_LDFLAGS)" \
72		--omit="$(POCO_OMIT)" \
73		$(POCO_CONF_OPTS) \
74		--unbundled \
75		--no-tests \
76		--no-samples)
77endef
78
79# Use $(MAKE1) to avoid failures on heavilly parallel machines (e.g. -j25)
80define POCO_BUILD_CMDS
81	$(TARGET_MAKE_ENV) $(MAKE1) POCO_TARGET_OSARCH=$(ARCH) CROSS_COMPILE=$(TARGET_CROSS) \
82		POCO_MYSQL_INCLUDE=$(STAGING_DIR)/usr/include/mysql \
83		POCO_MYSQL_LIB=$(STAGING_DIR)/usr/lib/mysql \
84		POCO_PGSQL_INCLUDE=$(STAGING_DIR)/usr/include/postgresql \
85		POCO_PGSQL_LIB=$(STAGING_DIR)/usr/lib/postgresql \
86		DEFAULT_TARGET=$(POCO_MAKE_TARGET) -C $(@D)
87endef
88
89define POCO_INSTALL_STAGING_CMDS
90	$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(STAGING_DIR) POCO_TARGET_OSARCH=$(ARCH) \
91		DEFAULT_TARGET=$(POCO_MAKE_TARGET) install -C $(@D)
92endef
93
94define POCO_INSTALL_TARGET_CMDS
95	$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) POCO_TARGET_OSARCH=$(ARCH) \
96		DEFAULT_TARGET=$(POCO_MAKE_TARGET) install -C $(@D)
97endef
98
99$(eval $(generic-package))
100