mirror of
https://github.com/genodelabs/genode.git
synced 2025-01-19 03:06:39 +00:00
parent
079fd0071a
commit
e7cc54204f
210
repos/libports/lib/import/import-qt5_cmake.mk
Normal file
210
repos/libports/lib/import/import-qt5_cmake.mk
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
#
|
||||||
|
# The following externally defined variables are evaluated:
|
||||||
|
#
|
||||||
|
# CMAKE_LISTS_DIR: path to the CMakeLists.txt file
|
||||||
|
# CMAKE_TARGET_BINARIES binaries to be stripped and linked into 'bin' and 'debug' directories
|
||||||
|
# QT5_PORT_LIBS: Qt5 libraries used from port (for example libQt5Core)
|
||||||
|
#
|
||||||
|
|
||||||
|
QT_TOOLS_DIR = /usr/local/genode/qt5/20.08
|
||||||
|
|
||||||
|
ifeq ($(filter-out $(SPECS),arm),)
|
||||||
|
QT_PLATFORM = genode-arm-g++
|
||||||
|
else ifeq ($(filter-out $(SPECS),arm_64),)
|
||||||
|
QT_PLATFORM = genode-aarch64-g++
|
||||||
|
else ifeq ($(filter-out $(SPECS),x86_32),)
|
||||||
|
QT_PLATFORM = genode-x86_32-g++
|
||||||
|
else ifeq ($(filter-out $(SPECS),x86_64),)
|
||||||
|
QT_PLATFORM = genode-x86_64-g++
|
||||||
|
else
|
||||||
|
$(error Error: unsupported platform)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONTRIB_DIR),)
|
||||||
|
QT_DIR = $(call select_from_repositories,src/lib/qt5)
|
||||||
|
QT_API_DIR = $(call select_from_repositories,mkspecs)/..
|
||||||
|
else
|
||||||
|
QT_PORT_DIR = $(call select_from_ports,qt5)
|
||||||
|
QT_DIR = $(QT_PORT_DIR)/src/lib/qt5
|
||||||
|
QT_API_DIR = $(QT_DIR)/genode/api
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(VERBOSE),)
|
||||||
|
QT5_OUTPUT_FILTER = > /dev/null
|
||||||
|
endif
|
||||||
|
|
||||||
|
#
|
||||||
|
# Genode libraries to be linked to Qt applications and libraries
|
||||||
|
#
|
||||||
|
|
||||||
|
QT5_GENODE_LIBS_APP = libc.lib.so libm.lib.so stdcxx.lib.so qt5_component.lib.so
|
||||||
|
QT5_GENODE_LIBS_SHLIB = libc.lib.so libm.lib.so stdcxx.lib.so
|
||||||
|
|
||||||
|
#
|
||||||
|
# flags to be passed to CMake
|
||||||
|
#
|
||||||
|
|
||||||
|
GENODE_CMAKE_CFLAGS = \
|
||||||
|
-D__FreeBSD__=12 \
|
||||||
|
-D__GENODE__ \
|
||||||
|
-ffunction-sections \
|
||||||
|
-fno-strict-aliasing \
|
||||||
|
$(CC_OPT_NOSTDINC) \
|
||||||
|
$(CC_MARCH) \
|
||||||
|
$(CC_OPT_PIC) \
|
||||||
|
$(filter-out -I.,$(INCLUDES)) \
|
||||||
|
-I$(CURDIR)/cmake_root/include/QtCore/spec/$(QT_PLATFORM)
|
||||||
|
|
||||||
|
GENODE_CMAKE_LFLAGS_APP = \
|
||||||
|
$(addprefix $(LD_OPT_PREFIX),$(LD_MARCH)) \
|
||||||
|
$(addprefix $(LD_OPT_PREFIX),$(LD_OPT_GC_SECTIONS)) \
|
||||||
|
$(addprefix $(LD_OPT_PREFIX),$(LD_OPT_ALIGN_SANE)) \
|
||||||
|
$(addprefix $(LD_OPT_PREFIX),--dynamic-list=$(BASE_DIR)/src/ld/genode_dyn.dl) \
|
||||||
|
$(LD_OPT_NOSTDLIB) \
|
||||||
|
-Wl,-Ttext=0x01000000 \
|
||||||
|
$(CC_MARCH) \
|
||||||
|
-Wl,--dynamic-linker=$(DYNAMIC_LINKER).lib.so \
|
||||||
|
-Wl,--eh-frame-hdr \
|
||||||
|
-Wl,-rpath-link=. \
|
||||||
|
-Wl,-T -Wl,$(LD_SCRIPT_DYN) \
|
||||||
|
-L$(CURDIR)/cmake_root/lib \
|
||||||
|
-Wl,--whole-archive \
|
||||||
|
-Wl,--start-group \
|
||||||
|
$(addprefix -l:,$(QT5_GENODE_LIBS_APP)) \
|
||||||
|
$(shell $(CC) $(CC_MARCH) -print-libgcc-file-name) \
|
||||||
|
-Wl,--end-group \
|
||||||
|
-Wl,--no-whole-archive
|
||||||
|
|
||||||
|
GENODE_CMAKE_LFLAGS_SHLIB = \
|
||||||
|
$(LD_OPT_NOSTDLIB) \
|
||||||
|
-Wl,-shared \
|
||||||
|
-Wl,--eh-frame-hdr \
|
||||||
|
$(addprefix $(LD_OPT_PREFIX),$(LD_MARCH)) \
|
||||||
|
$(addprefix $(LD_OPT_PREFIX),$(LD_OPT_GC_SECTIONS)) \
|
||||||
|
$(addprefix $(LD_OPT_PREFIX),$(LD_OPT_ALIGN_SANE)) \
|
||||||
|
-Wl,-T -Wl,$(LD_SCRIPT_SO) \
|
||||||
|
$(addprefix $(LD_OPT_PREFIX),--entry=0x0) \
|
||||||
|
-L$(CURDIR)/cmake_root/lib \
|
||||||
|
-Wl,--whole-archive \
|
||||||
|
-Wl,--start-group \
|
||||||
|
$(addprefix -l:,$(QT5_GENODE_LIBS_SHLIB)) \
|
||||||
|
$(shell $(CC) $(CC_MARCH) -print-libgcc-file-name) \
|
||||||
|
-l:ldso_so_support.lib.a \
|
||||||
|
-Wl,--end-group \
|
||||||
|
-Wl,--no-whole-archive
|
||||||
|
|
||||||
|
ifeq ($(CONTRIB_DIR),)
|
||||||
|
GENODE_CMAKE_GL_INCDIRS = $(call select_from_repositories,include/GL)/..
|
||||||
|
else
|
||||||
|
GENODE_CMAKE_GL_INCDIRS = $(call select_from_ports,mesa)/include
|
||||||
|
endif
|
||||||
|
|
||||||
|
GENODE_CMAKE_OPENGL_LIBS = $(CURDIR)/cmake_root/lib/mesa.lib.so
|
||||||
|
|
||||||
|
#
|
||||||
|
# prepare a directory named 'cmake_root' where CMake can find needed files
|
||||||
|
#
|
||||||
|
|
||||||
|
cmake_root:
|
||||||
|
$(VERBOSE)mkdir -p $@
|
||||||
|
|
||||||
|
cmake_root/bin: cmake_root
|
||||||
|
$(VERBOSE)mkdir -p $@
|
||||||
|
$(VERBOSE)ln -sf $(QT_TOOLS_DIR)/bin/* $@/
|
||||||
|
|
||||||
|
cmake_root/include: cmake_root
|
||||||
|
$(VERBOSE)mkdir -p $@
|
||||||
|
$(VERBOSE)ln -snf $(QT_API_DIR)/include/* $@/
|
||||||
|
|
||||||
|
cmake_root/lib: cmake_root
|
||||||
|
$(VERBOSE)mkdir -p $@
|
||||||
|
|
||||||
|
cmake_root/lib/cmake: cmake_root/lib
|
||||||
|
$(VERBOSE)ln -snf $(QT_API_DIR)/lib/cmake $@
|
||||||
|
|
||||||
|
cmake_root/lib/%.lib.so: cmake_root/lib
|
||||||
|
$(VERBOSE)ln -sf $(BUILD_BASE_DIR)/var/libcache/$*/$*.abi.so $@
|
||||||
|
|
||||||
|
cmake_root/lib/%.lib.a: cmake_root/lib
|
||||||
|
$(VERBOSE)ln -sf $(BUILD_BASE_DIR)/var/libcache/$*/$*.lib.a $@
|
||||||
|
|
||||||
|
cmake_root/mkspecs: cmake_root
|
||||||
|
$(VERBOSE)ln -snf $(QT_API_DIR)/mkspecs $@
|
||||||
|
|
||||||
|
cmake_prepared.tag: \
|
||||||
|
cmake_root/bin \
|
||||||
|
cmake_root/include \
|
||||||
|
cmake_root/lib/cmake \
|
||||||
|
cmake_root/lib/libc.lib.so \
|
||||||
|
cmake_root/lib/libm.lib.so \
|
||||||
|
cmake_root/lib/egl.lib.so \
|
||||||
|
cmake_root/lib/mesa.lib.so \
|
||||||
|
cmake_root/lib/qt5_component.lib.so \
|
||||||
|
cmake_root/lib/stdcxx.lib.so \
|
||||||
|
cmake_root/lib/ldso_so_support.lib.a \
|
||||||
|
cmake_root/mkspecs
|
||||||
|
|
||||||
|
# add symlinks for Qt5 libraries listed in the 'QT5_PORT_LIBS' variable
|
||||||
|
ifeq ($(CONTRIB_DIR),)
|
||||||
|
$(VERBOSE)for qt5_lib in $(QT5_PORT_LIBS); do \
|
||||||
|
ln -sf $(BUILD_BASE_DIR)/var/libcache/$${qt5_lib}/$${qt5_lib}.abi.so cmake_root/lib/$${qt5_lib}.lib.so; \
|
||||||
|
done
|
||||||
|
else
|
||||||
|
$(VERBOSE)for qt5_lib in $(QT5_PORT_LIBS); do \
|
||||||
|
ln -sf $(BUILD_BASE_DIR)/bin/$${qt5_lib}.lib.so cmake_root/lib/; \
|
||||||
|
done
|
||||||
|
endif
|
||||||
|
$(VERBOSE)touch $@
|
||||||
|
|
||||||
|
.PHONY: build_with_cmake
|
||||||
|
|
||||||
|
# 'make' called by CMake uses '/bin/sh', which does not understand '-o pipefail'
|
||||||
|
unexport .SHELLFLAGS
|
||||||
|
|
||||||
|
ifeq ($(VERBOSE),)
|
||||||
|
CMAKE_MAKE_VERBOSE="1"
|
||||||
|
endif
|
||||||
|
|
||||||
|
build_with_cmake: cmake_prepared.tag
|
||||||
|
$(VERBOSE)CMAKE_PREFIX_PATH="$(CURDIR)/cmake_root" \
|
||||||
|
cmake \
|
||||||
|
--no-warn-unused-cli \
|
||||||
|
-DCMAKE_MODULE_PATH="$(CURDIR)/cmake_root/lib/cmake/Modules" \
|
||||||
|
-DCMAKE_SYSTEM_NAME="Genode" \
|
||||||
|
-DCMAKE_AR="$(AR)" \
|
||||||
|
-DCMAKE_C_COMPILER="$(CC)" \
|
||||||
|
-DCMAKE_C_FLAGS="$(GENODE_CMAKE_CFLAGS)" \
|
||||||
|
-DCMAKE_CXX_COMPILER="$(CXX)" \
|
||||||
|
-DCMAKE_CXX_STANDARD="17" \
|
||||||
|
-DCMAKE_CXX_FLAGS="$(GENODE_CMAKE_CFLAGS)" \
|
||||||
|
-DCMAKE_EXE_LINKER_FLAGS="$(GENODE_CMAKE_LFLAGS_APP)" \
|
||||||
|
-DCMAKE_SHARED_LINKER_FLAGS="$(GENODE_CMAKE_LFLAGS_SHLIB)" \
|
||||||
|
-DCMAKE_MODULE_LINKER_FLAGS="$(GENODE_CMAKE_LFLAGS_SHLIB)" \
|
||||||
|
-DCMAKE_GL_INCDIRS="$(GENODE_CMAKE_GL_INCDIRS)" \
|
||||||
|
-DCMAKE_OPENGL_LIBS="$(GENODE_CMAKE_OPENGL_LIBS)" \
|
||||||
|
$(CMAKE_LISTS_DIR) \
|
||||||
|
$(QT5_OUTPUT_FILTER)
|
||||||
|
|
||||||
|
$(VERBOSE)$(MAKE) VERBOSE=$(CMAKE_MAKE_VERBOSE) $(QT5_OUTPUT_FILTER)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Not every CMake project has an 'install' target, so execute
|
||||||
|
# this target only if a binary to be installed has "install/" in
|
||||||
|
# its path.
|
||||||
|
#
|
||||||
|
ifneq ($(findstring install/,$(CMAKE_TARGET_BINARIES)),)
|
||||||
|
$(VERBOSE)$(MAKE) VERBOSE=$(CMAKE_MAKE_VERBOSE) DESTDIR=install install $(QT5_OUTPUT_FILTER)
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(VERBOSE)for cmake_target_binary in $(CMAKE_TARGET_BINARIES); do \
|
||||||
|
$(STRIP) $${cmake_target_binary} -o $${cmake_target_binary}.stripped; \
|
||||||
|
ln -sf $(CURDIR)/$${cmake_target_binary}.stripped $(PWD)/bin/`basename $${cmake_target_binary}`; \
|
||||||
|
ln -sf $(CURDIR)/$${cmake_target_binary} $(PWD)/debug/; \
|
||||||
|
done
|
||||||
|
|
||||||
|
#
|
||||||
|
# build applications with CMake
|
||||||
|
#
|
||||||
|
TARGET ?= $(CMAKE_LISTS_DIR).cmake_target
|
||||||
|
.PHONY: $(TARGET)
|
||||||
|
$(TARGET): build_with_cmake
|
@ -1,4 +1,5 @@
|
|||||||
MIRROR_FROM_REP_DIR := lib/import/import-qt5_qmake.mk
|
MIRROR_FROM_REP_DIR := lib/import/import-qt5_cmake.mk \
|
||||||
|
lib/import/import-qt5_qmake.mk
|
||||||
|
|
||||||
content: $(MIRROR_FROM_REP_DIR)
|
content: $(MIRROR_FROM_REP_DIR)
|
||||||
|
|
||||||
|
10
repos/libports/recipes/src/test-qt_core_cmake/content.mk
Normal file
10
repos/libports/recipes/src/test-qt_core_cmake/content.mk
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
MIRROR_FROM_REP_DIR := src/test/qt5/qt_core_cmake
|
||||||
|
|
||||||
|
content: $(MIRROR_FROM_REP_DIR) LICENSE
|
||||||
|
|
||||||
|
$(MIRROR_FROM_REP_DIR):
|
||||||
|
$(mirror_from_rep_dir)
|
||||||
|
|
||||||
|
LICENSE:
|
||||||
|
cp $(GENODE_DIR)/LICENSE $@
|
||||||
|
|
1
repos/libports/recipes/src/test-qt_core_cmake/hash
Normal file
1
repos/libports/recipes/src/test-qt_core_cmake/hash
Normal file
@ -0,0 +1 @@
|
|||||||
|
2022-06-29 8cdcdc46d00eccf1286daef650819700f21f0961
|
5
repos/libports/recipes/src/test-qt_core_cmake/used_apis
Normal file
5
repos/libports/recipes/src/test-qt_core_cmake/used_apis
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
libc
|
||||||
|
qt5
|
||||||
|
qt5_component
|
||||||
|
so
|
||||||
|
stdcxx
|
52
repos/libports/run/qt5_core_cmake.run
Normal file
52
repos/libports/run/qt5_core_cmake.run
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
create_boot_directory
|
||||||
|
|
||||||
|
import_from_depot [depot_user]/src/[base_src] \
|
||||||
|
[depot_user]/src/init \
|
||||||
|
[depot_user]/src/libc \
|
||||||
|
[depot_user]/src/qt5_base \
|
||||||
|
[depot_user]/src/qt5_component \
|
||||||
|
[depot_user]/src/stdcxx \
|
||||||
|
[depot_user]/src/vfs \
|
||||||
|
[depot_user]/src/zlib \
|
||||||
|
[depot_user]/src/test-qt_core_cmake
|
||||||
|
|
||||||
|
install_config {
|
||||||
|
<config verbose="yes">
|
||||||
|
<parent-provides>
|
||||||
|
<service name="ROM"/>
|
||||||
|
<service name="LOG"/>
|
||||||
|
<service name="RM"/>
|
||||||
|
<service name="CPU"/>
|
||||||
|
<service name="PD"/>
|
||||||
|
<service name="IRQ"/>
|
||||||
|
<service name="IO_PORT"/>
|
||||||
|
<service name="IO_MEM"/>
|
||||||
|
</parent-provides>
|
||||||
|
|
||||||
|
<default-route>
|
||||||
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
|
</default-route>
|
||||||
|
|
||||||
|
<default caps="100"/>
|
||||||
|
|
||||||
|
<start name="timer">
|
||||||
|
<resource name="RAM" quantum="1M"/>
|
||||||
|
<provides><service name="Timer"/></provides>
|
||||||
|
</start>
|
||||||
|
|
||||||
|
<start name="test-qt_core_cmake">
|
||||||
|
<resource name="RAM" quantum="10M" />
|
||||||
|
<config>
|
||||||
|
<vfs>
|
||||||
|
<dir name="dev"> <log/> </dir>
|
||||||
|
</vfs>
|
||||||
|
<libc stdout="/dev/log" stderr="/dev/log"/>
|
||||||
|
</config>
|
||||||
|
</start>
|
||||||
|
</config>}
|
||||||
|
|
||||||
|
build_boot_image { }
|
||||||
|
|
||||||
|
append qemu_args " -nographic "
|
||||||
|
|
||||||
|
run_genode_until "Test done.*\n" 10
|
15
repos/libports/src/test/qt5/qt_core_cmake/CMakeLists.txt
Normal file
15
repos/libports/src/test/qt5/qt_core_cmake/CMakeLists.txt
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.10.0)
|
||||||
|
|
||||||
|
project(test-qt_core_cmake LANGUAGES CXX)
|
||||||
|
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
|
||||||
|
find_package(Qt5 COMPONENTS Core REQUIRED)
|
||||||
|
|
||||||
|
add_executable(test-qt_core_cmake
|
||||||
|
main.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(test-qt_core_cmake Qt5::Core)
|
12
repos/libports/src/test/qt5/qt_core_cmake/main.cpp
Normal file
12
repos/libports/src/test/qt5/qt_core_cmake/main.cpp
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
/*
|
||||||
|
* \brief QtCore test
|
||||||
|
* \author Christian Prochaska
|
||||||
|
* \date 2018-01-16
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <QtCore>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
qInfo() << "Test done.";
|
||||||
|
}
|
9
repos/libports/src/test/qt5/qt_core_cmake/target.mk
Normal file
9
repos/libports/src/test/qt5/qt_core_cmake/target.mk
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
CMAKE_LISTS_DIR = $(PRG_DIR)
|
||||||
|
|
||||||
|
CMAKE_TARGET_BINARIES = test-qt_core_cmake
|
||||||
|
|
||||||
|
QT5_PORT_LIBS = libQt5Core
|
||||||
|
|
||||||
|
LIBS = libc libm qt5_component stdcxx $(QT5_PORT_LIBS)
|
||||||
|
|
||||||
|
include $(call select_from_repositories,lib/import/import-qt5_cmake.mk)
|
Loading…
Reference in New Issue
Block a user