@@ -173,7 +173,6 @@ opt() {
173
173
fi
174
174
}
175
175
176
-
177
176
msg " looking for configure programs"
178
177
need_cmd cmp
179
178
need_cmd mkdir
@@ -482,138 +481,168 @@ then
482
481
fi
483
482
484
483
# Have to be in the top of src directory for this
485
- cd ${CFG_SRC_DIR}
486
-
487
484
if [ -z $CFG_DISABLE_MANAGE_SUBMODULES ]
488
485
then
489
- msg " git: submodule sync"
490
- " ${CFG_GIT} " submodule sync --quiet
491
- SUBMODULE_STATUS=$( " ${CFG_GIT} " submodule status)
492
- NEED_INIT_COUNT=$( echo " $SUBMODULE_STATUS " | grep -c " ^-" )
493
- NEED_UPDATE_COUNT=$( echo " $SUBMODULE_STATUS " | grep -c " ^+" )
494
- NEED_INIT=$( test $NEED_INIT_COUNT -gt 0) $?
495
- NEED_UPDATE=$( test " ($NEED_INIT )" -o " $NEED_UPDATE_COUNT " -gt 0) $?
496
- else
497
- NEED_INIT=
498
- NEED_UPDATE=
499
- fi
500
-
501
- if [ $NEED_INIT ]
502
- then
503
- msg " git: submodule init"
504
- " ${CFG_GIT} " submodule init --quiet
505
- need_ok " git failed"
506
- fi
507
-
508
- if [ $NEED_UPDATE ]
509
- then
510
- msg " git: submodule update"
511
- " ${CFG_GIT} " submodule update --quiet
512
- need_ok " git failed"
486
+ cd ${CFG_SRC_DIR}
487
+ msg " git: submodule sync"
488
+ " ${CFG_GIT} " submodule sync --quiet
489
+ SUBMODULES=$( " ${CFG_GIT} " submodule status | awk ' {print $2}' )
490
+ for s in $SUBMODULES
491
+ do
492
+ msg " git: submodule status ${s} "
493
+ status=$( " ${CFG_GIT} " submodule status ${s} | awk ' {print $1}' )
494
+ case ${status} in
495
+ -* )
496
+ msg " ${s} is not initialized, initializing"
497
+ " ${CFG_GIT} " submodule init --quiet ${s}
498
+ need_ok " git failed"
499
+ msg " ${s} updating"
500
+ " ${CFG_GIT} " submodule update --quiet ${s}
501
+ need_ok " git failed"
502
+ ;;
503
+ +* )
504
+ msg " ${s} is not up to date, updating"
505
+ " ${CFG_GIT} " submodule update --quiet ${s}
506
+ need_ok " git failed"
507
+ ;;
508
+ * )
509
+ msg " ${s} is clean"
510
+ ;;
511
+ esac
512
+ done
513
+ cd ${CFG_BUILD_DIR}
513
514
fi
514
515
515
- cd ${CFG_BUILD_DIR}
516
-
517
-
518
- # Configure llvm. Here we go...
516
+ # Configure llvm, only if necessary
517
+ step_msg " looking at LLVM"
519
518
CFG_LLVM_SRC_DIR=${CFG_SRC_DIR} src/llvm
520
-
521
519
for t in $CFG_TARGET_TRIPLES
522
520
do
521
+ do_reconfigure=1
522
+
523
523
if [ -z $CFG_LLVM_ROOT ]
524
524
then
525
- step_msg " configuring LLVM for $t "
526
-
527
- LLVM_BUILD_DIR=$CFG_BUILD_DIR /llvm/$t
525
+ LLVM_BUILD_DIR=$CFG_BUILD_DIR /llvm/$t
526
+ if [ ! -z " $CFG_DISABLE_OPTIMIZE_LLVM " ]
527
+ then
528
+ LLVM_DBG_OPTS=" "
529
+ # Just use LLVM straight from its build directory to
530
+ # avoid 'make install' time
531
+ LLVM_INST_DIR=$LLVM_BUILD_DIR /Debug+Asserts
532
+ else
533
+ LLVM_DBG_OPTS=" --enable-optimized"
534
+ LLVM_INST_DIR=$LLVM_BUILD_DIR /Release+Asserts
535
+ fi
536
+ else
537
+ msg " not reconfiguring LLVM, external LLVM root"
538
+ # The user is using their own LLVM
539
+ LLVM_BUILD_DIR=
540
+ LLVM_INST_DIR=$CFG_LLVM_ROOT
541
+ do_reconfigure=0
542
+ fi
528
543
529
- LLVM_TARGETS=" --enable-targets=x86,x86_64"
530
- LLVM_BUILD=" --build=$t "
531
- LLVM_HOST=" --host=$t "
532
- LLVM_TARGET=" --target=$t "
533
544
534
- if [ ! -z " $CFG_DISABLE_OPTIMIZE_LLVM " ]
545
+ if [ ${do_reconfigure} -ne 0 ]
535
546
then
536
- LLVM_DBG_OPTS=" "
537
- # Just use LLVM straight from its build directory to
538
- # avoid 'make install' time
539
- LLVM_INST_DIR=$LLVM_BUILD_DIR /Debug+Asserts
540
- else
541
- LLVM_DBG_OPTS=" --enable-optimized"
542
- LLVM_INST_DIR=$LLVM_BUILD_DIR /Release+Asserts
547
+ # because git is hilarious, it might have put the module index
548
+ # in a couple places.
549
+ index1=" ${CFG_SRC_DIR} .git/modules/src/llvm/index"
550
+ index2=" ${CFG_SRC_DIR} src/llvm/.git/index"
551
+ for index in ${index1} ${index2}
552
+ do
553
+ config_status=" ${CFG_BUILD_DIR} /llvm/$t /config.status"
554
+ if test -e ${index} -a \
555
+ -e ${config_status} -a \
556
+ ${config_status} -nt ${index}
557
+ then
558
+ msg " not reconfiguring LLVM, config.status is fresh"
559
+ do_reconfigure=0
560
+ fi
561
+ done
543
562
fi
544
- # Disable unused LLVM features
545
- LLVM_OPTS=" $LLVM_DBG_OPTS --disable-docs --disable-jit --enable-bindings=none --disable-threads --disable-pthreads"
546
-
547
- if [ " $CFG_C_COMPILER " = " clang" ]
548
- then
549
- LLVM_CXX_32=" clang++ -m32"
550
- LLVM_CC_32=" clang -m32"
551
-
552
- LLVM_CXX_64=" clang++"
553
- LLVM_CC_64=" clang"
554
- else
555
- LLVM_CXX_32=" g++ -m32"
556
- LLVM_CC_32=" gcc -m32"
557
-
558
- LLVM_CXX_64=" g++"
559
- LLVM_CC_64=" gcc"
560
- fi
561
-
562
- LLVM_CFLAGS_32=" -m32"
563
- LLVM_CXXFLAGS_32=" -m32"
564
- LLVM_LDFLAGS_32=" -m32"
565
-
566
- LLVM_CFLAGS_64=" "
567
- LLVM_CXXFLAGS_64=" "
568
- LLVM_LDFLAGS_64=" "
569
-
570
- if echo $t | grep x86_64
571
- then
572
- LLVM_CXX=$LLVM_CXX_64
573
- LLVM_CC=$LLVM_CC_64
574
- LLVM_CFLAGS=$LLVM_CFLAGS_64
575
- LLVM_CXXFLAGS=$LLVM_CXXFLAGS_64
576
- LLVM_LDFLAGS=$LLVM_LDFLAGS_64
577
- else
578
- LLVM_CXX=$LLVM_CXX_32
579
- LLVM_CC=$LLVM_CC_32
580
- LLVM_CFLAGS=$LLVM_CFLAGS_32
581
- LLVM_CXXFLAGS=$LLVM_CXXFLAGS_32
582
- LLVM_LDFLAGS=$LLVM_LDFLAGS_32
583
- fi
584
-
585
- CXX=$LLVM_CXX
586
- CC=$LLVM_CC
587
- CFLAGS=$LLVM_CFLAGS
588
- CXXFLAGS=$LLVM_CXXFLAGS
589
- LDFLAGS=$LLVM_LDFLAGS
590
-
591
- LLVM_FLAGS=" $LLVM_TARGETS $LLVM_OPTS $LLVM_BUILD $LLVM_HOST $LLVM_TARGET "
592
-
593
- msg " configuring LLVM with:"
594
- msg " $LLVM_FLAGS "
595
-
596
- export CXX
597
- export CC
598
- export CFLAGS
599
- export CXXFLAGS
600
- export LDFLAGS
601
-
602
- cd $LLVM_BUILD_DIR
603
- case $CFG_SRC_DIR in
604
- /* | [a-z]:* | [A-Z]:* )
605
- ${CFG_LLVM_SRC_DIR} /configure $LLVM_FLAGS
606
- ;;
607
- * )
608
- ${CFG_BUILD_DIR} /${CFG_LLVM_SRC_DIR} /configure $LLVM_FLAGS
609
- ;;
610
- esac
611
- need_ok " LLVM configure failed"
612
- cd $CFG_BUILD_DIR
613
- else
614
- LLVM_BUILD_DIR=
615
- # The user is using their own LLVM
616
- LLVM_INST_DIR=$CFG_LLVM_ROOT
563
+
564
+ if [ ${do_reconfigure} -ne 0 ]
565
+ then
566
+ msg " configuring LLVM for $t "
567
+
568
+ LLVM_TARGETS=" --enable-targets=x86,x86_64"
569
+ LLVM_BUILD=" --build=$t "
570
+ LLVM_HOST=" --host=$t "
571
+ LLVM_TARGET=" --target=$t "
572
+
573
+ # Disable unused LLVM features
574
+ LLVM_OPTS=" $LLVM_DBG_OPTS --disable-docs --disable-jit \
575
+ --enable-bindings=none --disable-threads \
576
+ --disable-pthreads"
577
+
578
+ if [ " $CFG_C_COMPILER " = " clang" ]
579
+ then
580
+ LLVM_CXX_32=" clang++ -m32"
581
+ LLVM_CC_32=" clang -m32"
582
+
583
+ LLVM_CXX_64=" clang++"
584
+ LLVM_CC_64=" clang"
585
+ else
586
+ LLVM_CXX_32=" g++ -m32"
587
+ LLVM_CC_32=" gcc -m32"
588
+
589
+ LLVM_CXX_64=" g++"
590
+ LLVM_CC_64=" gcc"
591
+ fi
592
+
593
+ LLVM_CFLAGS_32=" -m32"
594
+ LLVM_CXXFLAGS_32=" -m32"
595
+ LLVM_LDFLAGS_32=" -m32"
596
+
597
+ LLVM_CFLAGS_64=" "
598
+ LLVM_CXXFLAGS_64=" "
599
+ LLVM_LDFLAGS_64=" "
600
+
601
+ if echo $t | grep -q x86_64
602
+ then
603
+ LLVM_CXX=$LLVM_CXX_64
604
+ LLVM_CC=$LLVM_CC_64
605
+ LLVM_CFLAGS=$LLVM_CFLAGS_64
606
+ LLVM_CXXFLAGS=$LLVM_CXXFLAGS_64
607
+ LLVM_LDFLAGS=$LLVM_LDFLAGS_64
608
+ else
609
+ LLVM_CXX=$LLVM_CXX_32
610
+ LLVM_CC=$LLVM_CC_32
611
+ LLVM_CFLAGS=$LLVM_CFLAGS_32
612
+ LLVM_CXXFLAGS=$LLVM_CXXFLAGS_32
613
+ LLVM_LDFLAGS=$LLVM_LDFLAGS_32
614
+ fi
615
+
616
+ CXX=$LLVM_CXX
617
+ CC=$LLVM_CC
618
+ CFLAGS=$LLVM_CFLAGS
619
+ CXXFLAGS=$LLVM_CXXFLAGS
620
+ LDFLAGS=$LLVM_LDFLAGS
621
+
622
+ LLVM_FLAGS=" $LLVM_TARGETS $LLVM_OPTS $LLVM_BUILD \
623
+ $LLVM_HOST $LLVM_TARGET "
624
+
625
+ msg " configuring LLVM with:"
626
+ msg " $LLVM_FLAGS "
627
+
628
+ export CXX
629
+ export CC
630
+ export CFLAGS
631
+ export CXXFLAGS
632
+ export LDFLAGS
633
+
634
+ cd $LLVM_BUILD_DIR
635
+ case $CFG_SRC_DIR in
636
+ /* | [a-z]:* | [A-Z]:* )
637
+ ${CFG_LLVM_SRC_DIR} /configure $LLVM_FLAGS
638
+ ;;
639
+ * )
640
+ ${CFG_BUILD_DIR} /${CFG_LLVM_SRC_DIR} /configure \
641
+ $LLVM_FLAGS
642
+ ;;
643
+ esac
644
+ need_ok " LLVM configure failed"
645
+ cd $CFG_BUILD_DIR
617
646
fi
618
647
619
648
# Construct variables for LLVM build and install directories for
0 commit comments