mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 21:21:48 +03:00
50 lines
1.3 KiB
Bash
Executable file
50 lines
1.3 KiB
Bash
Executable file
#! /usr/bin/env bash
|
|
|
|
if [[ $OS != linux ]]; then exit 0; fi
|
|
|
|
TEST_DIR=${OUTPUT_BASE}
|
|
# create two libraries with the first depending on the second
|
|
# so that if they're given the wrong order on the commandline,
|
|
# linking would ordinarily fail
|
|
D_LIBFILE1=$TEST_DIR/first.d
|
|
D_LIBFILE2=$TEST_DIR/second.d
|
|
D_LIB1=$TEST_DIR/libfirst.a
|
|
D_LIB2=$TEST_DIR/libsecond.a
|
|
# call from D
|
|
D_FILE=$TEST_DIR/test.d
|
|
APP=$TEST_DIR/test
|
|
|
|
mkdir -p $TEST_DIR
|
|
|
|
cat >$D_LIBFILE1 <<EOF
|
|
module first;
|
|
import second;
|
|
|
|
int first(int x) { return second.second(x); }
|
|
EOF
|
|
|
|
cat >$D_LIBFILE2 <<EOF
|
|
module second;
|
|
|
|
int second(int x) { return 0; }
|
|
EOF
|
|
|
|
cat >$D_FILE <<EOF
|
|
module test;
|
|
|
|
import first;
|
|
|
|
void main() {
|
|
first.first(0);
|
|
}
|
|
EOF
|
|
|
|
${DMD} -m${MODEL} -lib -of${D_LIB1} -I${TEST_DIR} ${D_LIBFILE1}
|
|
${DMD} -m${MODEL} -lib -of${D_LIB2} -I${TEST_DIR} ${D_LIBFILE2}
|
|
|
|
# -lsecond -lfirst is wrong but for --start-group/--end-group,
|
|
# so --start-group and --end-group must not be reordered relative to the libraries
|
|
${DMD} -m${MODEL} -of${APP} ${D_FILE} -I${TEST_DIR} -L-L${TEST_DIR} -L=--start-group -L-lsecond -L-lfirst -L=--end-group
|
|
|
|
# analogously for libsecond.a libfirst.a
|
|
${DMD} -m${MODEL} -of${APP} ${D_FILE} -I${TEST_DIR} -L-L${TEST_DIR} -L=--start-group -L=${TEST_DIR}/libsecond.a -L=${TEST_DIR}/libfirst.a -L=--end-group
|