Skip to content

Commit 358a8c2

Browse files
authored
Enable libgomp (#97)
* Enable libgomp * Add pthread to LIB_SPEC * add pthread as driver option * enable libgomp build * buildscripts: fix libgomp for windows
1 parent f9a6869 commit 358a8c2

2 files changed

Lines changed: 57 additions & 2 deletions

File tree

CMakeLists.txt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,6 @@ set(common_gcc_configure_args
434434
--enable-languages=c,c++
435435
--disable-decimal-float
436436
--disable-libffi
437-
--disable-libgomp
438437
--disable-libmudflap
439438
--disable-libquadmath
440439
--disable-libssp
@@ -482,6 +481,7 @@ ExternalProject_add(gcc-base
482481
${common_gcc_configure_args}
483482
--disable-threads
484483
--without-headers
484+
--disable-libgomp
485485
"CFLAGS=${GCC_CFLAGS}"
486486
"CXXFLAGS=${GCC_CFLAGS}"
487487
BUILD_COMMAND $(MAKE) all-gcc
@@ -505,6 +505,9 @@ ExternalProject_add(vita-headers
505505
# Copy the include headers to the installation directory
506506
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_INSTALL_PREFIX}/${target_arch}/include
507507
COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/include ${CMAKE_INSTALL_PREFIX}/${target_arch}/include
508+
# Copy the generated .a files to the toolchain directory (required for libgomp target)
509+
COMMAND ${CMAKE_COMMAND} -E make_directory ${toolchain_build_install_dir}/${target_arch}/lib
510+
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_INSTALL_PREFIX}/${target_arch}/lib ${toolchain_build_install_dir}/${target_arch}/lib
508511
# Install a copy of the headers in the toolchain directory (required for pthread-embedded target)
509512
COMMAND ${CMAKE_COMMAND} -E make_directory ${toolchain_build_install_dir}/${target_arch}/include
510513
COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/include ${toolchain_build_install_dir}/${target_arch}/include
@@ -570,6 +573,7 @@ if(CMAKE_TOOLCHAIN_FILE)
570573
${common_gcc_configure_args}
571574
--disable-threads
572575
--with-headers=yes
576+
--disable-libgomp
573577
"CFLAGS=${GCC_CFLAGS}"
574578
"CXXFLAGS=${GCC_CFLAGS}"
575579
BUILD_COMMAND ${toolchain_tools} ${wrapper_command} $(MAKE) INHIBIT_LIBC_CFLAGS="-DUSE_TM_CLONE_REGISTRY=0"
@@ -593,6 +597,8 @@ ExternalProject_Add(pthread-embedded
593597
BUILD_COMMAND ${compiler_flags} ${wrapper_command} $(MAKE)
594598
-C <SOURCE_DIR>/platform/vita ${pthread_tools} PREFIX=${CMAKE_INSTALL_PREFIX}
595599
INSTALL_COMMAND $(MAKE) -C <SOURCE_DIR>/platform/vita PREFIX=${CMAKE_INSTALL_PREFIX}/${target_arch} install
600+
# Install into the toolchain directory (required for libgomp target)
601+
COMMAND $(MAKE) install -C <SOURCE_DIR>/platform/vita PREFIX=${toolchain_build_install_dir}/${target_arch} install
596602
# Save the commit id for tracking purposes
597603
COMMAND ${GIT_EXECUTABLE} -C <SOURCE_DIR> rev-parse HEAD > ${CMAKE_BINARY_DIR}/pthread-embedded-version.txt
598604
${UPDATE_DISCONNECTED_SUPPORT}
@@ -622,6 +628,7 @@ ExternalProject_add(gcc-final
622628
${common_gcc_configure_args}
623629
--with-headers=yes
624630
--enable-threads=posix
631+
--enable-libgomp
625632
"CFLAGS=${GCC_CFLAGS}"
626633
"CXXFLAGS=${GCC_CFLAGS}"
627634
BUILD_COMMAND ${toolchain_tools} ${compiler_target_tools} ${wrapper_command}

patches/gcc/0001-gcc-8.patch

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,55 @@ index 4f57765b0..a4d5ffb14 100644
3737
+#undef LIB_SPEC
3838
#ifndef LIB_SPEC
3939
-#define LIB_SPEC "%{!shared:%{g*:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}}"
40-
+#define LIB_SPEC "%{!shared:%{g*:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}} -lSceRtc_stub -lSceSysmem_stub -lSceKernelThreadMgr_stub -lSceKernelModulemgr_stub -lSceIofilemgr_stub -lSceProcessmgr_stub -lSceLibKernel_stub -lSceNet_stub"
40+
+#define LIB_SPEC "%{!shared:%{g*:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}} %{pthread:--whole-archive -lpthread --no-whole-archive} -lSceRtc_stub -lSceSysmem_stub -lSceKernelThreadMgr_stub -lSceKernelModulemgr_stub -lSceIofilemgr_stub -lSceProcessmgr_stub -lSceLibKernel_stub -lSceNet_stub"
4141
#endif
4242

4343
/* When using -fsplit-stack we need to wrap pthread_create, in order
44+
diff --git a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt
45+
index af478a946b2..31d0ff7fd18 100644
46+
--- a/gcc/config/arm/arm.opt
47+
+++ b/gcc/config/arm/arm.opt
48+
@@ -21,6 +21,9 @@
49+
HeaderInclude
50+
config/arm/arm-opts.h
51+
52+
+pthread
53+
+Driver
54+
+
55+
Enum
56+
Name(tls_type) Type(enum arm_tls_type)
57+
TLS dialect to use:
58+
diff --git a/libgomp/configure b/libgomp/configure
59+
index 6161da579c0..68c31eaad2b 100755
60+
--- a/libgomp/configure
61+
+++ b/libgomp/configure
62+
@@ -15720,29 +15720,6 @@ $as_echo "#define HAVE_UNAME 1" >>confdefs.h
63+
fi
64+
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
65+
66+
-# Check for gethostname.
67+
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
68+
-/* end confdefs.h. */
69+
-#include <unistd.h>
70+
-int
71+
-main ()
72+
-{
73+
-
74+
- char buf[256];
75+
- if (gethostname (buf, sizeof (buf) - 1) == 0)
76+
- buf[255] = '\0';
77+
-
78+
- ;
79+
- return 0;
80+
-}
81+
-_ACEOF
82+
-if ac_fn_c_try_compile "$LINENO"; then :
83+
-
84+
-$as_echo "#define HAVE_GETHOSTNAME 1" >>confdefs.h
85+
-
86+
-fi
87+
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
88+
-
89+
# Check for getpid.
90+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
91+
/* end confdefs.h. */

0 commit comments

Comments
 (0)