2013-06-06 01:53:30 +02:00
|
|
|
################################################################################
|
2012-07-18 15:59:10 +02:00
|
|
|
#
|
|
|
|
# luajit
|
|
|
|
#
|
2013-06-06 01:53:30 +02:00
|
|
|
################################################################################
|
2012-07-18 15:59:10 +02:00
|
|
|
|
2015-05-20 09:41:48 +02:00
|
|
|
LUAJIT_VERSION = 2.0.4
|
.mk files: bulk aligment and whitespace cleanup of assignments
The Buildroot coding style defines one space around make assignments and
does not align the assignment symbols.
This patch does a bulk fix of offending packages. The package
infrastructures (or more in general assignments to calculated variable
names, like $(2)_FOO) are not touched.
Alignment of line continuation characters (\) is kept as-is.
The sed command used to do this replacement is:
find * -name "*.mk" | xargs sed -i \
-e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\s*$#\1 \2#'
-e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\s*\([^\\]\+\)$#\1 \2 \3#'
-e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\s*\([^\\ \t]\+\s*\\\)\s*$#\1 \2 \3#'
-e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\(\s*\\\)#\1 \2\3#'
Brief explanation of this command:
^\([A-Z0-9a-z_]\+\) a regular variable at the beginning of the line
\([?:+]\?=\) any assignment character =, :=, ?=, +=
\([^\\]\+\) any string not containing a line continuation
\([^\\ \t]\+\s*\\\) string, optional whitespace, followed by a
line continuation character
\(\s*\\\) optional whitespace, followed by a line
continuation character
Hence, the first subexpression handles empty assignments, the second
handles regular assignments, the third handles regular assignments with
line continuation, and the fourth empty assignments with line
continuation.
This expression was tested on following test text: (initial tab not
included)
FOO = spaces before
FOO = spaces before and after
FOO = tab before
FOO = tab and spaces before
FOO = tab after
FOO = tab and spaces after
FOO = spaces and tab after
FOO = \
FOO = bar \
FOO = bar space \
FOO = \
GENIMAGE_DEPENDENCIES = host-pkgconf libconfuse
FOO += spaces before
FOO ?= spaces before and after
FOO :=
FOO =
FOO =
FOO =
FOO =
$(MAKE1) CROSS_COMPILE=$(TARGET_CROSS) -C
AT91BOOTSTRAP3_DEFCONFIG = \
AXEL_DISABLE_I18N=--i18n=0
After this bulk change, following manual fixups were done:
- fix line continuation alignment in cegui06 and spice (the sed
expression leaves the number of whitespace between the value and line
continuation character intact, but the whitespace before that could have
changed, causing misalignment.
- qt5base was reverted, as this package uses extensive alignment which
actually makes the code more readable.
Finally, the end result was manually reviewed.
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Cc: Yann E. Morin <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-10-07 09:06:03 +02:00
|
|
|
LUAJIT_SOURCE = LuaJIT-$(LUAJIT_VERSION).tar.gz
|
|
|
|
LUAJIT_SITE = http://luajit.org/download
|
2012-08-06 07:46:39 +02:00
|
|
|
LUAJIT_LICENSE = MIT
|
|
|
|
LUAJIT_LICENSE_FILES = COPYRIGHT
|
2012-07-18 15:59:10 +02:00
|
|
|
|
|
|
|
LUAJIT_INSTALL_STAGING = YES
|
|
|
|
|
2014-05-15 19:37:05 +02:00
|
|
|
LUAJIT_PROVIDES = luainterpreter
|
|
|
|
|
2014-12-03 22:41:29 +01:00
|
|
|
ifeq ($(BR2_STATIC_LIBS),y)
|
2014-03-01 18:23:04 +01:00
|
|
|
LUAJIT_BUILDMODE = static
|
|
|
|
else
|
|
|
|
LUAJIT_BUILDMODE = dynamic
|
|
|
|
endif
|
|
|
|
|
2012-07-18 15:59:10 +02:00
|
|
|
# The luajit build procedure requires the host compiler to have the
|
|
|
|
# same bitness as the target compiler. Therefore, on a x86 build
|
|
|
|
# machine, we can't build luajit for x86_64, which is checked in
|
|
|
|
# Config.in. When the target is a 32 bits target, we pass -m32 to
|
|
|
|
# ensure that even on 64 bits build machines, a compiler of the same
|
|
|
|
# bitness is used. Of course, this assumes that the 32 bits multilib
|
|
|
|
# libraries are installed.
|
|
|
|
ifeq ($(BR2_ARCH_IS_64),y)
|
.mk files: bulk aligment and whitespace cleanup of assignments
The Buildroot coding style defines one space around make assignments and
does not align the assignment symbols.
This patch does a bulk fix of offending packages. The package
infrastructures (or more in general assignments to calculated variable
names, like $(2)_FOO) are not touched.
Alignment of line continuation characters (\) is kept as-is.
The sed command used to do this replacement is:
find * -name "*.mk" | xargs sed -i \
-e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\s*$#\1 \2#'
-e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\s*\([^\\]\+\)$#\1 \2 \3#'
-e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\s*\([^\\ \t]\+\s*\\\)\s*$#\1 \2 \3#'
-e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\(\s*\\\)#\1 \2\3#'
Brief explanation of this command:
^\([A-Z0-9a-z_]\+\) a regular variable at the beginning of the line
\([?:+]\?=\) any assignment character =, :=, ?=, +=
\([^\\]\+\) any string not containing a line continuation
\([^\\ \t]\+\s*\\\) string, optional whitespace, followed by a
line continuation character
\(\s*\\\) optional whitespace, followed by a line
continuation character
Hence, the first subexpression handles empty assignments, the second
handles regular assignments, the third handles regular assignments with
line continuation, and the fourth empty assignments with line
continuation.
This expression was tested on following test text: (initial tab not
included)
FOO = spaces before
FOO = spaces before and after
FOO = tab before
FOO = tab and spaces before
FOO = tab after
FOO = tab and spaces after
FOO = spaces and tab after
FOO = \
FOO = bar \
FOO = bar space \
FOO = \
GENIMAGE_DEPENDENCIES = host-pkgconf libconfuse
FOO += spaces before
FOO ?= spaces before and after
FOO :=
FOO =
FOO =
FOO =
FOO =
$(MAKE1) CROSS_COMPILE=$(TARGET_CROSS) -C
AT91BOOTSTRAP3_DEFCONFIG = \
AXEL_DISABLE_I18N=--i18n=0
After this bulk change, following manual fixups were done:
- fix line continuation alignment in cegui06 and spice (the sed
expression leaves the number of whitespace between the value and line
continuation character intact, but the whitespace before that could have
changed, causing misalignment.
- qt5base was reverted, as this package uses extensive alignment which
actually makes the code more readable.
Finally, the end result was manually reviewed.
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Cc: Yann E. Morin <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-10-07 09:06:03 +02:00
|
|
|
LUAJIT_HOST_CC = $(HOSTCC)
|
2012-07-18 15:59:10 +02:00
|
|
|
else
|
.mk files: bulk aligment and whitespace cleanup of assignments
The Buildroot coding style defines one space around make assignments and
does not align the assignment symbols.
This patch does a bulk fix of offending packages. The package
infrastructures (or more in general assignments to calculated variable
names, like $(2)_FOO) are not touched.
Alignment of line continuation characters (\) is kept as-is.
The sed command used to do this replacement is:
find * -name "*.mk" | xargs sed -i \
-e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\s*$#\1 \2#'
-e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\s*\([^\\]\+\)$#\1 \2 \3#'
-e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\s*\([^\\ \t]\+\s*\\\)\s*$#\1 \2 \3#'
-e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\(\s*\\\)#\1 \2\3#'
Brief explanation of this command:
^\([A-Z0-9a-z_]\+\) a regular variable at the beginning of the line
\([?:+]\?=\) any assignment character =, :=, ?=, +=
\([^\\]\+\) any string not containing a line continuation
\([^\\ \t]\+\s*\\\) string, optional whitespace, followed by a
line continuation character
\(\s*\\\) optional whitespace, followed by a line
continuation character
Hence, the first subexpression handles empty assignments, the second
handles regular assignments, the third handles regular assignments with
line continuation, and the fourth empty assignments with line
continuation.
This expression was tested on following test text: (initial tab not
included)
FOO = spaces before
FOO = spaces before and after
FOO = tab before
FOO = tab and spaces before
FOO = tab after
FOO = tab and spaces after
FOO = spaces and tab after
FOO = \
FOO = bar \
FOO = bar space \
FOO = \
GENIMAGE_DEPENDENCIES = host-pkgconf libconfuse
FOO += spaces before
FOO ?= spaces before and after
FOO :=
FOO =
FOO =
FOO =
FOO =
$(MAKE1) CROSS_COMPILE=$(TARGET_CROSS) -C
AT91BOOTSTRAP3_DEFCONFIG = \
AXEL_DISABLE_I18N=--i18n=0
After this bulk change, following manual fixups were done:
- fix line continuation alignment in cegui06 and spice (the sed
expression leaves the number of whitespace between the value and line
continuation character intact, but the whitespace before that could have
changed, causing misalignment.
- qt5base was reverted, as this package uses extensive alignment which
actually makes the code more readable.
Finally, the end result was manually reviewed.
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Cc: Yann E. Morin <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-10-07 09:06:03 +02:00
|
|
|
LUAJIT_HOST_CC = $(HOSTCC) -m32
|
2012-07-18 15:59:10 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
# We unfortunately can't use TARGET_CONFIGURE_OPTS, because the luajit
|
|
|
|
# build system uses non conventional variable names.
|
|
|
|
define LUAJIT_BUILD_CMDS
|
|
|
|
$(MAKE) PREFIX="/usr" \
|
|
|
|
STATIC_CC="$(TARGET_CC)" \
|
|
|
|
DYNAMIC_CC="$(TARGET_CC) -fPIC" \
|
|
|
|
TARGET_LD="$(TARGET_CC)" \
|
|
|
|
TARGET_AR="$(TARGET_AR) rcus" \
|
2014-03-01 18:23:02 +01:00
|
|
|
TARGET_STRIP=true \
|
2012-08-15 03:25:30 +02:00
|
|
|
TARGET_CFLAGS="$(TARGET_CFLAGS)" \
|
|
|
|
TARGET_LDFLAGS="$(TARGET_LDFLAGS)" \
|
2012-07-18 15:59:10 +02:00
|
|
|
HOST_CC="$(LUAJIT_HOST_CC)" \
|
|
|
|
HOST_CFLAGS="$(HOST_CFLAGS)" \
|
|
|
|
HOST_LDFLAGS="$(HOST_LDFLAGS)" \
|
2014-03-01 18:23:04 +01:00
|
|
|
BUILDMODE=$(LUAJIT_BUILDMODE) \
|
2012-07-18 15:59:10 +02:00
|
|
|
-C $(@D) amalg
|
|
|
|
endef
|
|
|
|
|
|
|
|
define LUAJIT_INSTALL_STAGING_CMDS
|
luajit: pass LDCONFIG=true to make sure dynamic library links are created
To install its shared library, the luajit Makefile does:
cd src && test -f $(FILE_SO) && \
$(INSTALL_X) $(FILE_SO) $(INSTALL_DYN) && \
$(LDCONFIG) $(INSTALL_LIB) && \
$(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT1) && \
$(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT2) || :
This means that if ldconfig doesn't work or isn't available on the
system, it won't create the libluajit-5.1.so -> libluajit-5.1.so.5.2.0
symbolic link.
Not having this symbolic link prevents lua-ev from finding the shared
version of the luajit library, and it fallbacks to using the
libluajit.a static library. However, this static library is not built
with -fPIC, so using it within a shared library doesn't work, and
leads to build failures on architectures that really do want to have
non-fPIC code into a shared library, such as x86-64.
By passing LDCONFIG=true during the installation steps of luajit, we
ensure that the symbolic links are created, which allows lua-ev to
detect the shared library properly, making everybody happy.
Investigation conducted with Samuel Martin. Thanks!
Fixes:
http://autobuild.buildroot.org/results/41c/41c8bb9cf91a86908a150dae27726136cb56f5b7/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-02-26 23:29:59 +01:00
|
|
|
$(MAKE) PREFIX="/usr" DESTDIR="$(STAGING_DIR)" LDCONFIG=true -C $(@D) install
|
2012-07-18 15:59:10 +02:00
|
|
|
endef
|
|
|
|
|
|
|
|
define LUAJIT_INSTALL_TARGET_CMDS
|
luajit: pass LDCONFIG=true to make sure dynamic library links are created
To install its shared library, the luajit Makefile does:
cd src && test -f $(FILE_SO) && \
$(INSTALL_X) $(FILE_SO) $(INSTALL_DYN) && \
$(LDCONFIG) $(INSTALL_LIB) && \
$(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT1) && \
$(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT2) || :
This means that if ldconfig doesn't work or isn't available on the
system, it won't create the libluajit-5.1.so -> libluajit-5.1.so.5.2.0
symbolic link.
Not having this symbolic link prevents lua-ev from finding the shared
version of the luajit library, and it fallbacks to using the
libluajit.a static library. However, this static library is not built
with -fPIC, so using it within a shared library doesn't work, and
leads to build failures on architectures that really do want to have
non-fPIC code into a shared library, such as x86-64.
By passing LDCONFIG=true during the installation steps of luajit, we
ensure that the symbolic links are created, which allows lua-ev to
detect the shared library properly, making everybody happy.
Investigation conducted with Samuel Martin. Thanks!
Fixes:
http://autobuild.buildroot.org/results/41c/41c8bb9cf91a86908a150dae27726136cb56f5b7/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-02-26 23:29:59 +01:00
|
|
|
$(MAKE) PREFIX="/usr" DESTDIR="$(TARGET_DIR)" LDCONFIG=true -C $(@D) install
|
2012-07-18 15:59:10 +02:00
|
|
|
endef
|
|
|
|
|
2014-11-30 19:46:12 +01:00
|
|
|
define LUAJIT_INSTALL_SYMLINK
|
|
|
|
ln -fs luajit $(TARGET_DIR)/usr/bin/lua
|
|
|
|
endef
|
|
|
|
LUAJIT_POST_INSTALL_TARGET_HOOKS += LUAJIT_INSTALL_SYMLINK
|
|
|
|
|
2016-03-05 00:00:42 +01:00
|
|
|
# host-efl package needs host-luajit to be linked dynamically.
|
2014-07-19 16:38:55 +02:00
|
|
|
define HOST_LUAJIT_BUILD_CMDS
|
2016-03-05 00:00:42 +01:00
|
|
|
$(MAKE) PREFIX="/usr" BUILDMODE=dynamic \
|
|
|
|
TARGET_LDFLAGS="$(HOST_LDFLAGS)" \
|
|
|
|
-C $(@D) amalg
|
2014-07-19 16:38:55 +02:00
|
|
|
endef
|
|
|
|
|
|
|
|
define HOST_LUAJIT_INSTALL_CMDS
|
package/luajit: ensure dynamic library symlinks are created
The luajit Makefile has the following logic:
$(LDCONFIG) $(INSTALL_LIB) && \
$(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT1) && \
$(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT2) || :
So if ldconfig fails for some reason, the symbolic links to refer to
the luajit library are not created. Since ldconfig for the target
didn't make sense, LDCONFIG=true has been added a long time ago when
building the target variant of luajit.
However, since commit 9ba8d1cce4ab00307827083bae234d87b37fb967, the
host variant of luajit is also linked dynamically. While ldconfig for
the host should work, on certain machines ldconfig is not available in
the PATH, and needs to be explicitly called as
/sbin/ldconfig. However, since output/host/usr/lib is in the RPATH of
the binaries we create, there is really no need to bother running
ldconfig, so we simply pass LDCONFIG=true, like we do for the target
variant. This ensures that the symlinks are always created.
Fixes:
http://autobuild.buildroot.net/results/4dc/4dcbcde0046e265317e170a977e699e5c3a06b87/
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: Francois Perrad <francois.perrad@gadz.org>
[Thomas: rewrite commit log with a proper explanation.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-03-23 23:04:59 +01:00
|
|
|
$(MAKE) PREFIX="/usr" DESTDIR="$(HOST_DIR)" LDCONFIG=true -C $(@D) install
|
2014-07-19 16:38:55 +02:00
|
|
|
endef
|
|
|
|
|
2012-07-18 15:59:10 +02:00
|
|
|
$(eval $(generic-package))
|
2014-07-19 16:38:55 +02:00
|
|
|
$(eval $(host-generic-package))
|