+ "BSD-aarch64" => {
+ inherit_from => [ "BSD-generic64" ],
+ lib_cppflags => add("-DL_ENDIAN"),
+ bn_ops => "SIXTY_FOUR_BIT_LONG",
+ asm_arch => 'aarch64',
+ perlasm_scheme => "linux64",
+ },
+
+ "BSD-ppc" => {
+ inherit_from => [ "BSD-generic32" ],
+ asm_arch => 'ppc32',
+ perlasm_scheme => "linux32",
+ lib_cppflags => add("-DB_ENDIAN"),
+ },
+
+ "BSD-ppc64" => {
+ inherit_from => [ "BSD-generic64" ],
+ cflags => add("-m64"),
+ cxxflags => add("-m64"),
+ lib_cppflags => add("-DB_ENDIAN"),
+ asm_arch => 'ppc64',
+ perlasm_scheme => "linux64",
+ },
+
+ "BSD-ppc64le" => {
+ inherit_from => [ "BSD-generic64" ],
+ cflags => add("-m64"),
+ cxxflags => add("-m64"),
+ lib_cppflags => add("-DL_ENDIAN"),
+ asm_arch => 'ppc64',
+ perlasm_scheme => "linux64le",
+ },
+
+ # riscv below refers to contemporary RISCV Architecture
+ # specifications,
+ "BSD-riscv64" => {
+ inherit_from => [ "BSD-generic64"],
+ perlasm_scheme => "linux64",
+ asm_arch => 'riscv64',
+ },
+
+ "BSD-riscv32" => {
+ inherit_from => [ "BSD-generic32"],
+ perlasm_scheme => "linux32",
+ asm_arch => 'riscv32',
+ },
+
+ "BSD-armv4" => {
+ ################################################################
+ # Note that -march is not among compiler options in linux-armv4
+ # target description. Not specifying one is intentional to give
+ # you choice to:
+ #
+ # a) rely on your compiler default by not specifying one;
+ # b) specify your target platform explicitly for optimal
+ # performance, e.g. -march=armv6 or -march=armv7-a;
+ # c) build "universal" binary that targets *range* of platforms
+ # by specifying minimum and maximum supported architecture;
+ #
+ # As for c) option. It actually makes no sense to specify
+ # maximum to be less than ARMv7, because it's the least
+ # requirement for run-time switch between platform-specific
+ # code paths. And without run-time switch performance would be
+ # equivalent to one for minimum. Secondly, there are some
+ # natural limitations that you'd have to accept and respect.
+ # Most notably you can *not* build "universal" binary for
+ # big-endian platform. This is because ARMv7 processor always
+ # picks instructions in little-endian order. Another similar
+ # limitation is that -mthumb can't "cross" -march=armv6t2
+ # boundary, because that's where it became Thumb-2. Well, this
+ # limitation is a bit artificial, because it's not really
+ # impossible, but it's deemed too tricky to support. And of
+ # course you have to be sure that your binutils are actually
+ # up to the task of handling maximum target platform. With all
+ # this in mind here is an example of how to configure
+ # "universal" build:
+ #
+ # ./Configure BSD-armv4 -march=armv6 -D__ARM_MAX_ARCH__=8
+ #
+ inherit_from => [ "BSD-generic32" ],
+ asm_arch => 'armv4',
+ perlasm_scheme => "linux32",
+ },
+