Skip to content

Building a library with ffreestanding flag. #1117

Closed
@hanseul1795

Description

@hanseul1795

Description

I'm trying a build a library with --ffreestanding flag on Android NDK r19c, and I'm getting use of undeclared identifier "LONG_BIT" error.

I know that (from #352), --ffreestanding

is the cause but it's a requirement for the library.

In file included from C:\Users\hanseul.shin\Desktop\PremakeTest\tutorials\Engine\Tools\AndroidBuild\android-ndk-r19c\sources\android\cpufeatures\cpu-features.c:69:
In file included from C:\Users\hanseul.shin\Desktop\PremakeTest\tutorials/Engine/Tools/AndroidBuild/android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\pthread.h:37:
In file included from C:\Users\hanseul.shin\Desktop\PremakeTest\tutorials/Engine/Tools/AndroidBuild/android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\time.h:33:
In file included from C:\Users\hanseul.shin\Desktop\PremakeTest\tutorials/Engine/Tools/AndroidBuild/android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\sys/time.h:37:
In file included from C:\Users\hanseul.shin\Desktop\PremakeTest\tutorials/Engine/Tools/AndroidBuild/android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\sys/select.h:36:
In file included from C:\Users\hanseul.shin\Desktop\PremakeTest\tutorials/Engine/Tools/AndroidBuild/android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\signal.h:37:
C:\Users\hanseul.shin\Desktop\PremakeTest\tutorials/Engine/Tools/AndroidBuild/android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\bits/signal_types.h:65:53: error: use of undeclared identifier 'LONG_BIT'
typedef struct { unsigned long __bits[_KERNEL__NSIG/LONG_BIT]; } sigset64_t;
                                                    ^
In file included from C:\Users\hanseul.shin\Desktop\PremakeTest\tutorials\Engine\Tools\AndroidBuild\android-ndk-r19c\sources\android\cpufeatures\cpu-features.c:69:
In file included from C:\Users\hanseul.shin\Desktop\PremakeTest\tutorials/Engine/Tools/AndroidBuild/android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\pthread.h:37:
In file included from C:\Users\hanseul.shin\Desktop\PremakeTest\tutorials/Engine/Tools/AndroidBuild/android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\time.h:33:
In file included from C:\Users\hanseul.shin\Desktop\PremakeTest\tutorials/Engine/Tools/AndroidBuild/android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\sys/time.h:37:
In file included from C:\Users\hanseul.shin\Desktop\PremakeTest\tutorials/Engine/Tools/AndroidBuild/android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\sys/select.h:36:
In file included from C:\Users\hanseul.shin\Desktop\PremakeTest\tutorials/Engine/Tools/AndroidBuild/android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\signal.h:203:
C:\Users\hanseul.shin\Desktop\PremakeTest\tutorials/Engine/Tools/AndroidBuild/android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\android/legacy_signal_inlines.h:71:33: error: use of undeclared identifier 'LONG_BIT'
  return (int)((local_set[bit / LONG_BIT] >> (bit % LONG_BIT)) & 1);
	.CFLAGS            	+  -m32 -target $NDKToolchainArmTarget$ -march=armv7-a -mfloat-abi=softfp -mcpu=cortex-a9 -mfpu=neon-vfpv4'
                        + ' -ffreestanding -fomit-frame-pointer'
	.Librarian         	= '$NDKToolchainClangRoot$\$NDKToolchainArmType$-ar.exe'
  	.Linker            	= '$NDKToolchainClangLinker$'
  	.Strip			   	= '$NDKToolchainClangRoot$\$NDKToolchainArmType$-strip.exe'
  	.ObjCopy		   	= '$NDKToolchainClangRoot$\$NDKToolchainArmType$-objcopy.exe'
  	.LinkerSystemPaths  = ' -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-rpath-link=$NDKSysRoot$\usr\libs\$NDKToolchainArmType$\19'
						+ ' -Wl,-z,relro -Wl,-z,now -Wl,--fix-cortex-a8'
						+ '-target $NDKToolchainArmTarget$'
	.IncludePaths       + ' -I$NDKSysRoot$\usr\include\arm-linux-androideabi'
	.LinkerSystemLibs   + ' -lunwind'

I'm testing on API LEVEL = 19 and using llvm Clang toolchain with the right target.

Environment Details

Not all of these will be relevant to every bug, but please provide as much
information as you can.

  • NDK Version: r19c
  • Build system: Premake/FastBuild
  • Host OS: Windows
  • NDK API level: 19 (try to test below 21)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions