## -*- mode: perl; -*-
## Build configuration targets for openssl-team members

my %targets = (
    "purify" => {
        inherit_from     => [ 'BASE_unix' ],
        cc               => "purify gcc",
        CFLAGS           => "-g -Wall",
        thread_scheme    => "(unknown)",
        ex_libs          => add(" ","-lsocket -lnsl"),
    },
    "debug" => {
        inherit_from     => [ 'BASE_unix' ],
        cc               => "gcc",
        cflags           => combine(join(' ', @gcc_devteam_warn),
                                "-DOPENSSL_NO_ASM -ggdb -g2"
                              . " -DBN_DEBUG -DBN_RAND_DEBUG"
                              ),
        thread_scheme    => "(unknown)",
    },
    "debug-erbridge" => {
        inherit_from     => [ 'BASE_unix', "x86_64_asm" ],
        cc               => "gcc",
        cflags           => combine(join(' ', @gcc_devteam_warn),
                                    "-m64 -DL_ENDIAN -DTERMIO -g",
                                    threads("-D_REENTRANT")),
        ex_libs          => add(" ","-ldl"),
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        thread_scheme    => "pthreads",
        asm_arch         => 'x86_64',
        perlasm_scheme   => "elf",
        dso_scheme       => "dlfcn",
        shared_target    => "linux-shared",
        shared_cflag     => "-fPIC",
        shared_ldflag    => "-m64",
        multilib         => "64",
    },
    "debug-linux-pentium" => {
        inherit_from     => [ 'BASE_unix', "x86_elf_asm" ],
        cc               => "gcc",
        cflags           => combine("-DL_ENDIAN -g -mcpu=pentium -Wall",
                                    threads("-D_REENTRANT")),
        ex_libs          => add(" ","-ldl"),
        bn_ops           => "BN_LLONG",
        asm_arch         => 'x86',
        perlasm_scheme   => 'elf',
        thread_scheme    => "pthreads",
        dso_scheme       => "dlfcn",
    },
    "debug-linux-ppro" => {
        inherit_from     => [ 'BASE_unix', "x86_elf_asm" ],
        cc               => "gcc",
        cflags           => combine("-DL_ENDIAN -g -mcpu=pentiumpro -Wall",
                                    threads("-D_REENTRANT")),
        ex_libs          => add(" ","-ldl"),
        bn_ops           => "BN_LLONG",
        asm_arch         => 'x86',
        perlasm_scheme   => 'elf',
        thread_scheme    => "pthreads",
        dso_scheme       => "dlfcn",
    },
    "debug-test-64-clang" => {
        inherit_from     => [ 'BASE_unix', "x86_64_asm" ],
        cc               => "clang",
        cflags           => combine(join(' ', @gcc_devteam_warn),
                                    "-Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -g3 -O3 -pipe",
                                    threads("${BSDthreads}")),
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        thread_scheme    => "pthreads",
        asm_arch         => 'x86_64',
        perlasm_scheme   => "elf",
        dso_scheme       => "dlfcn",
        shared_target    => "bsd-gcc-shared",
        shared_cflag     => "-fPIC",
    },
    "darwin64-debug-test-64-clang" => {
        inherit_from     => [ 'BASE_unix', "x86_64_asm" ],
        cc               => "clang",
        cflags           => combine("-arch x86_64 -DL_ENDIAN",
                                    join(' ', @gcc_devteam_warn),
                                    "-Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -g3 -O3 -pipe",
                                    threads("${BSDthreads}")),
        sys_id           => "MACOSX",
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        thread_scheme    => "pthreads",
        asm_arch         => 'x86_64',
        perlasm_scheme   => "macosx",
        dso_scheme       => "dlfcn",
        shared_target    => "darwin-shared",
        shared_cflag     => "-fPIC -fno-common",
        shared_ldflag    => "-arch x86_64 -dynamiclib",
        shared_extension => ".\$(SHLIB_VERSION_NUMBER).dylib",
    },
);
