nuttx/libs/libc/zoneinfo/Makefile

133 lines
3.3 KiB
Makefile
Raw Normal View History

2016-07-01 00:20:43 +02:00
############################################################################
# libs/libc/zoneinfo/Makefile
2016-07-01 00:20:43 +02:00
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
2016-07-01 00:20:43 +02:00
#
# http://www.apache.org/licenses/LICENSE-2.0
2016-07-01 00:20:43 +02:00
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
2016-07-01 00:20:43 +02:00
#
############################################################################
include $(TOPDIR)/Make.defs
2016-07-01 00:20:43 +02:00
ifeq ($(CONFIG_LIBC_ZONEINFO_ROMFS),y)
2016-07-01 00:20:43 +02:00
CSRCS += tzromfs.c
endif
AOBJS = $(ASRCS:.S=$(OBJEXT))
COBJS = $(CSRCS:.c=$(OBJEXT))
SRCS = $(ASRCS) $(CSRCS)
OBJS = $(AOBJS) $(COBJS)
ZONEINFO_PATH = $(TOPDIR)/libs/libc/zoneinfo
2016-07-01 00:20:43 +02:00
TZBIN_PATH = $(ZONEINFO_PATH)/tzbin
TZCODE_PATH = $(ZONEINFO_PATH)/tzcode
# Common build
all: .built
.PHONY: romfs register context depend clean distclean
$(AOBJS): %$(OBJEXT): %.S
$(call ASSEMBLE, $<, $@)
$(COBJS): %$(OBJEXT): %.c
$(call COMPILE, $<, $@)
.built: .tzbuilt romfs $(OBJS)
nuttx/build: Restore ARLOCK to improve compile speed in incremental case To solve the issue of carrying object files from previous builds, Matias changed the archiving process to re-archive libapps.a on every compilation, if libapps.a carries more object files, incremental compilation will waste too many time in re-archiving, compared with the previous implement, this is a degradation of the build system. Referring to mature engineering projects such as cmake, if there is configuration or source file changed, the best solution should be to reconfigure the environment. Revert this PR to ensure the compilation speed during incremental compilation. | commit 34b34e2d4519956f9a61f5985aca29947c4b8b23 (tag: nuttx-20200914-172150) | Author: Matias N <matias@protobits.dev> | Date: Fri Sep 11 22:31:38 2020 -0300 | | Fix: ensure archive files do not carry object files from prior builds | | In some cases, when NuttX configuration changes and this makes the | object list used to build one of the .a libraries change as well, | since the command used to build it is "ar crs" and this simply appends | the list of object files, the library could still include object | files from prior builds. This commit modifies the ARCHIVE macro to | erase the .a file if it already exists. | | Since in some cases this behavior was actually expected (object | files from a subdirectory were appended to a library created one | level above) I added a ARCHIVE_ADD which works as ARCHIVE did. | | This change should greatly improve behavior of building after | configuration changes. Testing: sim:nsh ------------------------------- | Patched | Current ------------------------------- |$ time make | $ time make |real 0m1.270s | real 0m1.728s |user 0m0.971s | user 0m1.276s |sys 0m0.363s | sys 0m0.530s ------------------------------- Private project (20+ 3rd library needs archive to libapps.a) ------------------------------- | Patched | Current ------------------------------- |$ time make | $ time make |real 0m21.181s | real 0m39.721s |user 0m14.638s | user 0m24.837s |sys 0m6.919s | sys 0m14.394s ------------------------------- Signed-off-by: chao an <anchao@xiaomi.com>
2023-09-11 05:50:36 +02:00
$(call ARCHIVE, ..$(DELIM)$(BIN), $(OBJS))
2016-07-01 00:20:43 +02:00
$(Q) touch .built
# ROMFS file system containing the TZ database
ifeq ($(CONFIG_LIBC_ZONEINFO_ROMFS),y)
2016-07-01 00:20:43 +02:00
checkgenromfs:
@genromfs -h 1>/dev/null 2>&1 || { \
echo "Host executable genromfs not available in PATH"; \
echo "You may need to download in from http://romfs.sourceforge.net/"; \
exit 1; \
}
romfs_zoneinfo.img : checkgenromfs .tzbuilt
@genromfs -f $@ -d $(TZBIN_PATH)/usr/share/zoneinfo -V "TZDatbase" || { echo "genromfs failed" ; exit 1 ; }
2016-07-01 00:20:43 +02:00
romfs_zoneinfo.h : romfs_zoneinfo.img
@xxd -i $< >$@ || { echo "xxd of $< failed" ; exit 1 ; }
romfs: romfs_zoneinfo.h
else
romfs:
endif # CONFIG_LIBC_ZONEINFO_ROMFS
2016-07-01 00:20:43 +02:00
# Build TZ database
tzcode:
mkdir tzcode
tzbin:
mkdir tzbin
tzcode-latest.tar.gz:
$(call DOWNLOAD,ftp://ftp.iana.org/tz,tzcode-latest.tar.gz)
2016-07-01 00:20:43 +02:00
tzdata-latest.tar.gz:
$(call DOWNLOAD,ftp://ftp.iana.org/tz,tzdata-latest.tar.gz)
2016-07-01 00:20:43 +02:00
.tzunpack: tzcode tzcode-latest.tar.gz tzdata-latest.tar.gz
$(Q) tar zx -C tzcode -f tzcode-latest.tar.gz
$(Q) tar zx -C tzcode -f tzdata-latest.tar.gz
$(Q) touch .tzunpack
.tzbuilt: tzcode tzbin .tzunpack
$(Q) $(MAKE) -C tzcode TOPDIR=$(TZBIN_PATH) install
$(Q) touch .tzbuilt
# Create initial context
context: .tzbuilt romfs
# Create dependencies
2020-11-18 17:44:58 +01:00
makedepfile: $(CSRCS:.c=.ddc) $(ASRCS:.S=.dds)
$(call CATFILE, Make.dep, $^)
$(call DELFILE, $^)
.depend: Makefile $(SRCS) $(TOPDIR)$(DELIM).config
2020-11-18 17:44:58 +01:00
$(Q) $(MAKE) makedepfile
$(Q) touch $@
2016-07-01 00:20:43 +02:00
depend: .depend
2016-07-01 00:20:43 +02:00
clean:
$(call DELFILE, .built)
$(call CLEAN)
distclean: clean
$(call DELFILE, Make.dep)
$(call DELFILE, .depend)
2016-07-01 00:20:43 +02:00
$(call DELFILE, .tzunpack)
$(call DELFILE, .tzbuilt)
$(call DELFILE, romfs_zoneinfo.img)
$(call DELFILE, romfs_zoneinfo.h)
$(call DELFILE, tzdata-latest.tar.gz)
$(call DELFILE, tzcode-latest.tar.gz)
$(call DELDIR, tzbin)
$(call DELDIR, tzcode)
-include Make.dep