Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow setting CC, CXX, and other variables to indicate compiler path #17923

Merged
merged 14 commits into from
Jun 23, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
24 changes: 12 additions & 12 deletions make/Makefile.base
Original file line number Diff line number Diff line change
Expand Up @@ -115,16 +115,16 @@ CHPL_MAKE_AUXFS = $(CHPL_MAKE_AUX_FILESYS)
# on CHPL_MAKE_HOST_TARGET to the HOST or TARGET versions.
ifeq ($(strip $(CHPL_MAKE_HOST_TARGET)),--target)
CHPL_MAKE_COMPILER = $(CHPL_MAKE_TARGET_COMPILER)
CHPL_MAKE_COMPILER_COMMAND_C = $(CHPL_MAKE_TARGET_COMPILER_COMMAND_C)
CHPL_MAKE_COMPILER_COMMAND_CXX = $(CHPL_MAKE_TARGET_COMPILER_COMMAND_CXX)
CHPL_MAKE_CC = $(CHPL_MAKE_TARGET_CC)
CHPL_MAKE_CXX = $(CHPL_MAKE_TARGET_CXX)
CHPL_MAKE_PLATFORM = $(CHPL_MAKE_TARGET_PLATFORM)
CHPL_MAKE_ARCH = $(CHPL_MAKE_TARGET_ARCH)
CHPL_MAKE_MEM = $(CHPL_MAKE_TARGET_MEM)
CHPL_MAKE_SANITIZE = $(CHPL_MAKE_SANITIZE_EXE)
else
CHPL_MAKE_COMPILER = $(CHPL_MAKE_HOST_COMPILER)
CHPL_MAKE_COMPILER_COMMAND_C = $(CHPL_MAKE_HOST_COMPILER_COMMAND_C)
CHPL_MAKE_COMPILER_COMMAND_CXX = $(CHPL_MAKE_HOST_COMPILER_COMMAND_CXX)
CHPL_MAKE_CC = $(CHPL_MAKE_HOST_CC)
CHPL_MAKE_CXX = $(CHPL_MAKE_HOST_CXX)
CHPL_MAKE_PLATFORM = $(CHPL_MAKE_HOST_PLATFORM)
CHPL_MAKE_ARCH = $(CHPL_MAKE_HOST_ARCH)
CHPL_MAKE_MEM = $(CHPL_MAKE_HOST_MEM)
Expand Down Expand Up @@ -203,8 +203,8 @@ printplatform:
@echo "CHPL_MAKE_HOST_PLATFORM = $(CHPL_MAKE_HOST_PLATFORM)"
@echo "CHPL_MAKE_TARGET_PLATFORM = $(CHPL_MAKE_TARGET_PLATFORM)"
@echo "CHPL_MAKE_COMPILER = $(CHPL_MAKE_COMPILER)"
@echo "CHPL_MAKE_COMPILER_COMMAND_C = $(CHPL_MAKE_COMPILER_COMMAND_C)"
@echo "CHPL_MAKE_COMPILER_COMMAND_CXX = $(CHPL_MAKE_COMPILER_COMMAND_CXX)"
@echo "CHPL_MAKE_CC = $(CHPL_MAKE_CC)"
@echo "CHPL_MAKE_CXX = $(CHPL_MAKE_CXX)"
@echo "CHPL_MAKE_LOCALE_MODEL = $(CHPL_MAKE_LOCALE_MODEL)"
@echo "CHPL_MAKE_TASKS = $(CHPL_MAKE_TASKS)"
@echo "CHPL_MAKE_THREADS = $(CHPL_MAKE_THREADS)"
Expand Down Expand Up @@ -296,13 +296,13 @@ EXE_SUFFIX =

# in case something goes wrong and we don't have a compiler, try
# falling back on gcc.
ifeq ($(CHPL_MAKE_COMPILER_COMMAND_CXX),)
$(warning CHPL_MAKE_COMPILER_COMMAND_CXX is not set so setting it to g++)
CHPL_MAKE_COMPILER_COMMAND_CXX = g++
ifeq ($(CHPL_MAKE_CXX),)
$(warning CHPL_MAKE_CXX is not set so setting it to g++)
CHPL_MAKE_CXX = g++
endif
ifeq ($(CHPL_MAKE_COMPILER_COMMAND_C),)
$(warning CHPL_MAKE_COMPILER_COMMAND_C is not set so setting it to gcc)
CHPL_MAKE_COMPILER_COMMAND_C = gcc
ifeq ($(CHPL_MAKE_CC),)
$(warning CHPL_MAKE_CC is not set so setting it to gcc)
CHPL_MAKE_CC = gcc
endif

#
Expand Down
8 changes: 4 additions & 4 deletions make/compiler/Makefile.clang
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,17 @@
# Tools
#

CXX = $(CHPL_MAKE_COMPILER_COMMAND_CXX) # normally clang++
CC = $(CHPL_MAKE_COMPILER_COMMAND_C) # normally clang
CXX = $(CHPL_MAKE_CXX) # normally clang++
CC = $(CHPL_MAKE_CC) # normally clang

ifeq ($(CHPL_MAKE_COMPILER), llvm)
ifeq ($(CHPL_MAKE_LLVM), bundled)
# handle using the included clang compiler
ifndef CLANG_SYSROOT_ARGS
export CLANG_SYSROOT_ARGS=$(shell cat $(LLVM_CLANG_ARGUMENTS_FILE))
endif
CXX = $(CHPL_MAKE_COMPILER_COMMAND_CXX) $(CLANG_SYSROOT_ARGS)
CC = $(CHPL_MAKE_COMPILER_COMMAND_C) $(CLANG_SYSROOT_ARGS)
CXX = $(CHPL_MAKE_CXX) $(CLANG_SYSROOT_ARGS)
CC = $(CHPL_MAKE_CC) $(CLANG_SYSROOT_ARGS)
endif
endif

Expand Down
4 changes: 2 additions & 2 deletions make/compiler/Makefile.cray-prgenv
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
# tools.
#

CC = $(CHPL_MAKE_COMPILER_COMMAND_C) # normally cc
CXX = $(CHPL_MAKE_COMPILER_COMMAND_CXX) # normally CC
CC = $(CHPL_MAKE_CC) # normally cc
CXX = $(CHPL_MAKE_CXX) # normally CC

RANLIB = ranlib

Expand Down
4 changes: 2 additions & 2 deletions make/compiler/Makefile.gnu
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
#
# Tools
#
CXX = $(CHPL_MAKE_COMPILER_COMMAND_CXX) # normally g++
CC = $(CHPL_MAKE_COMPILER_COMMAND_C) # normally gcc
CXX = $(CHPL_MAKE_CXX) # normally g++
CC = $(CHPL_MAKE_CC) # normally gcc

RANLIB = ranlib

Expand Down
4 changes: 2 additions & 2 deletions make/compiler/Makefile.ibm
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
#
# Tools
#
CXX = $(CHPL_MAKE_COMPILER_COMMAND_CXX) # normally xlC
CC = $(CHPL_MAKE_COMPILER_COMMAND_C) # normally xlc
CXX = $(CHPL_MAKE_CXX) # normally xlC
CC = $(CHPL_MAKE_CC) # normally xlc

RANLIB = ranlib

Expand Down
4 changes: 2 additions & 2 deletions make/compiler/Makefile.intel
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
#
# Tools
#
CXX = $(CHPL_MAKE_COMPILER_COMMAND_CXX) # normally icpc
CC = $(CHPL_MAKE_COMPILER_COMMAND_C) # normally icc
CXX = $(CHPL_MAKE_CXX) # normally icpc
CC = $(CHPL_MAKE_CC) # normally icc

ifeq (, $(MPI_CC))
MPI_CC = mpiicc
Expand Down
4 changes: 2 additions & 2 deletions make/compiler/Makefile.pgi
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
#
# Tools
#
CXX = $(CHPL_MAKE_COMPILER_COMMAND_CXX) # normally pgc++
CC = $(CHPL_MAKE_COMPILER_COMMAND_C) # normally pgcc
CXX = $(CHPL_MAKE_CXX) # normally pgc++
CC = $(CHPL_MAKE_CC) # normally pgcc

RANLIB = ranlib

Expand Down
7 changes: 5 additions & 2 deletions runtime/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,11 @@ $(CHPL_ENV_HEADER): $(CHPL_MAKE_HOME)/util/printchplenv $(CHPL_MAKE_HOME)/util/c
@echo "#ifndef _CHPL_ENV_GEN_H_" >> $(CHPL_ENV_HEADER)
@echo "#define _CHPL_ENV_GEN_H_" >> $(CHPL_ENV_HEADER)
@$(CHPL_MAKE_HOME)/util/printchplenv --runtime --no-tidy --anonymize --simple | \
sed s/-/_/g | \
sed s^/^_^g | \
grep -v CHPL_HOST_CC | \
grep -v CHPL_HOST_CXX | \
grep -v CHPL_TARGET_CC | \
grep -v CHPL_TARGET_CXX | \
sed s/[-+.\/]/_/g | \
sed s/\=/' '/ | \
awk '{ print "#define " $$1 "_" toupper($$2) }' >> $(CHPL_ENV_HEADER)
@echo "#endif /* _CHPL_ENV_GEN_H_ */" >> $(CHPL_ENV_HEADER)
Expand Down
17 changes: 4 additions & 13 deletions test/llvm/PREDIFF
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,10 @@ TMPFILE="$outfile.prediff.tmp"

FILECHECK='FileCheck'

USE_LLVM=`$CHPL_HOME/util/chplenv/chpl_llvm.py`

if [ "$USE_LLVM" = bundled -o "$USE_LLVM" = llvm ]
then
tmp=`$CHPL_HOME/util/printchplenv --all --internal --simple | grep CHPL_LLVM_UNIQ_CFG_PATH`
LLVM_UNIQUE_SUBDIR=${tmp/CHPL_LLVM_UNIQ_CFG_PATH=/}
FILECHECK=${CHPL_HOME}/third-party/llvm/install/${LLVM_UNIQUE_SUBDIR}/bin/FileCheck
elif [ "$USE_LLVM" = system ]
then
PREFERRED_LLVM_VERS=`cat ${CHPL_HOME}/third-party/llvm/LLVM_VERSION`
LLVM_CONFIG=`${CHPL_HOME}/third-party/llvm/find-llvm-config.sh $PREFERRED_LLVM_VERS`
FILECHECK=${LLVM_CONFIG//llvm-config/FileCheck}
fi
USE_LLVM=`${CHPL_HOME}/util/chplenv/chpl_llvm.py`
LLVM_CONFIG=`${CHPL_HOME}/util/chplenv/chpl_llvm.py --llvm-config`
BINDIR=`${LLVM_CONFIG} --bindir`
FILECHECK="${BINDIR}/FileCheck"

mv $OUTFILE $TMPFILE
$FILECHECK --input-file $TMPFILE $TESTNAME.chpl 2> $OUTFILE
Expand Down
33 changes: 11 additions & 22 deletions test/llvm/llvmDebug/llvmDebug_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,21 @@
CHPL_LLVM=None
CHPL_HOST_BIN_SUBDIR=None
CHPL_LLVM_UNIQ_CFG_PATH=None
CHPL_LLVM_CONFIG=None

for line in chplenv.splitlines():
line_str = str(line, encoding='utf-8', errors='surrogateescape')
kv = line_str.split('=', 2)
key = kv[0]
val = kv[1]
if key == 'CHPL_HOST_BIN_SUBDIR':
CHPL_HOST_BIN_SUBDIR= val
CHPL_HOST_BIN_SUBDIR=val
if key == 'CHPL_LLVM_UNIQ_CFG_PATH':
CHPL_LLVM_UNIQ_CFG_PATH= val
CHPL_LLVM_UNIQ_CFG_PATH=val
if key == 'CHPL_LLVM':
CHPL_LLVM= val
CHPL_LLVM=val
if key == 'CHPL_LLVM_CONFIG':
CHPL_LLVM_CONFIG=val

build_options = '--baseline -g'
source_path = os.getcwd() #same as target path
Expand All @@ -39,26 +42,12 @@
print ('Build Failed')
os._exit(1) #exit without raising an exception

# Determine syntax from LLVM version
llvm_vers_maj = 0
with open(chpl_home + '/third-party/llvm/LLVM_VERSION', 'r') as f:
llvm_vers_maj = int(f.readline().split('.')[0])
if llvm_vers_maj < 6:
debug_option = ' -debug-dump=str '
else:
debug_option = ' -debug-str '
debug_option = ' -debug-str '

llvm_dwarfdump = None
if CHPL_LLVM == "bundled":
llvm_dwarfdump = (chpl_home + '/third-party/llvm/install/' +
CHPL_LLVM_UNIQ_CFG_PATH + '/bin/llvm-dwarfdump')
else:
llvm_dwarfdump = "llvm-dwarfdump-" + str(llvm_vers_maj)
if not shutil.which(llvm_dwarfdump):
llvm_dwarfdump = "llvm-dwarfdump"
if not shutil.which(llvm_dwarfdump):
print ('Could not find llvm-dwarfdump')
os._exit(1) #exit without raising an exception
llvm_bin_bytes = subprocess.check_output([CHPL_LLVM_CONFIG, '--bindir'])
llvm_bin = str(llvm_bin_bytes, encoding='utf-8', errors='surrogateescape')
llvm_bin = llvm_bin.strip()
llvm_dwarfdump = llvm_bin + '/llvm-dwarfdump'

# Check Debug Info Existence
Command_check = llvm_dwarfdump + debug_option + target
Expand Down
4 changes: 4 additions & 0 deletions test/runtime/sungeun/chpl-env-gen.precomp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ testname = sys.argv[1]
genfile = testname+'.test.gen.c'
with open(genfile, 'w') as f:
for key,val in chpl_env.items():
if (key == 'CHPL_HOST_CC' or key == 'CHPL_HOST_CXX' or
key == 'CHPL_TARGET_CC' or key == 'CHPL_TARGET_CXX'):
continue

key_val = key+'_'+val.replace('-', '_').replace('/', '_').upper()
f.write('#ifndef %s\n'%(key_val))
f.write('#error "%s undefined or does not match runtime definition"\n'%(val))
Expand Down
1 change: 0 additions & 1 deletion third-party/llvm/LLVM_VERSION

This file was deleted.

10 changes: 9 additions & 1 deletion third-party/llvm/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,15 @@ $(LLVM_CONFIGURED_HEADER_FILE): $(LLVM_SRC_FILE)
echo Error: LLVM requires cmake 3.4.3 or later to build; \
exit 1; \
fi


@if [ "$(CHPL_MAKE_LLVM)" = "bundled" ] && \
[ "$(CHPL_MAKE_COMPILER)" = "llvm" ]; then \
echo Error: Cannot build bundled LLVM with itself ;\
echo Please change CHPL_HOST_COMPILER or CHPL_LLVM ; \
echo ; \
exit 1; \
fi

cd $(LLVM_BUILD_DIR) && cmake \
-DCMAKE_INSTALL_PREFIX=$(LLVM_INSTALL_DIR) \
-DCMAKE_C_COMPILER='$(CC)' \
Expand Down
11 changes: 6 additions & 5 deletions third-party/llvm/Makefile.include-bundled
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,18 @@ ifneq ("$(wildcard $(LLVM_POLLY_FILE))","")
CHPL_POLLY := 1
endif

ifdef HAVE_LLVM_CONFIG
ifndef LLVM_LLVM_LIBS

ifeq ($(LLVM_MAJOR_VERSION),10)
# frontendopenmp seems to be required to link clang in llvm 10
# but not in earlier or later versions
export LLVM_LLVM_LIBS=$(shell test -x $(LLVM_CONFIG) && $(LLVM_CONFIG) --ldflags --system-libs --libs bitreader bitwriter frontendopenmp ipo instrumentation option objcarcopts profiledata all-targets coverage coroutines lto)
export LLVM_LLVM_LIBS=$(shell $(LLVM_CONFIG) --ldflags --system-libs --libs bitreader bitwriter frontendopenmp ipo instrumentation option objcarcopts profiledata all-targets coverage coroutines lto)
else
export LLVM_LLVM_LIBS=$(shell test -x $(LLVM_CONFIG) && $(LLVM_CONFIG) --ldflags --system-libs --libs bitreader bitwriter ipo instrumentation option objcarcopts profiledata all-targets coverage coroutines lto)
export LLVM_LLVM_LIBS=$(shell $(LLVM_CONFIG) --ldflags --system-libs --libs bitreader bitwriter ipo instrumentation option objcarcopts profiledata all-targets coverage coroutines lto)
endif

endif
endif

ifeq ($(LLVM_MAJOR_VERSION_9PLUS),9)
Expand All @@ -48,6 +50,5 @@ LLVM_CFLAGS=$(LLVM_CONFIG_CFLAGS) -DHAVE_LLVM $(LLVM_RV_CFLAGS)
LLVM_INCLUDES=-I$(LLVM_INCLUDE_DIR)
LLVM_LIBS=-L$(LLVM_LIB_DIR) $(LLVM_CLANG_LIBS) $(LLVM_RV_LIBS) $(LLVM_LLVM_LIBS) -Wl,-rpath,$(LLVM_LIB_DIR)

CLANG_CC=$(LLVM_BIN_DIR)/clang
CLANG_CXX=$(LLVM_BIN_DIR)/clang++

CLANG_CC=$(CHPL_MAKE_LLVM_CLANG_C)
CLANG_CXX=$(CHPL_MAKE_LLVM_CLANG_CXX)
1 change: 0 additions & 1 deletion third-party/llvm/Makefile.include-llvm-clang

This file was deleted.

15 changes: 0 additions & 15 deletions third-party/llvm/Makefile.include-llvm-minimal

This file was deleted.

3 changes: 1 addition & 2 deletions third-party/llvm/Makefile.include-system
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
include $(THIRD_PARTY_DIR)/llvm/Makefile.share-system

ifndef LLVM_LLVM_LIBS
export LLVM_LLVM_LIBS=$(shell test -x $(LLVM_CONFIG) && $(LLVM_CONFIG) --ldflags --system-libs --libs bitreader bitwriter ipo instrumentation option objcarcopts profiledata all-targets coverage coroutines lto)
export LLVM_LLVM_LIBS=$(shell $(LLVM_CONFIG) --ldflags --system-libs --libs bitreader bitwriter ipo instrumentation option objcarcopts profiledata all-targets coverage coroutines lto)
endif

ifeq ($(LLVM_MAJOR_VERSION_9PLUS),9)
Expand All @@ -22,4 +22,3 @@ LLVM_CFLAGS=$(LLVM_CONFIG_CFLAGS) -DHAVE_LLVM

LLVM_INCLUDES=-I$(LLVM_CONFIG_INCLUDE_DIR)
LLVM_LIBS=-L$(LLVM_CONFIG_LIB_DIR) $(LLVM_CLANG_LIBS) $(LLVM_LLVM_LIBS)

12 changes: 0 additions & 12 deletions third-party/llvm/Makefile.include-system-minimal

This file was deleted.

13 changes: 11 additions & 2 deletions third-party/llvm/Makefile.share-bundled
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,24 @@ include $(THIRD_PARTY_DIR)/llvm/Makefile.share

LLVM_CLANG_ARGUMENTS_FILE=${LLVM_INSTALL_DIR}/configured-clang-sysroot-arguments
LLVM_CONFIG=$(LLVM_INSTALL_DIR)/bin/llvm-config
export LLVM_CONFIG:=$(CHPL_MAKE_LLVM_CONFIG)
TEST_LLVM_CONFIG:=$(shell test -x $(LLVM_CONFIG) && echo 1)
ifeq ($(TEST_LLVM_CONFIG),1)
export HAVE_LLVM_CONFIG:=1
endif

ifdef HAVE_LLVM_CONFIG

# LLVM preprocessor flags (ie -Dbla and -Ibla)
ifndef LLVM_CONFIG_CXXFLAGS
export LLVM_CONFIG_CXXFLAGS:=$(shell test -x $(LLVM_CONFIG) && $(LLVM_CONFIG) --cxxflags | awk -f $(THIRD_PARTY_DIR)/llvm/filter-llvm-config.awk)
export LLVM_CONFIG_CXXFLAGS:=$(shell $(LLVM_CONFIG) --cxxflags | awk -f $(THIRD_PARTY_DIR)/llvm/filter-llvm-config.awk)
endif

ifndef LLVM_CONFIG_CFLAGS
export LLVM_CONFIG_CFLAGS:=$(shell test -x $(LLVM_CONFIG) && $(LLVM_CONFIG) --cflags | awk -f $(THIRD_PARTY_DIR)/llvm/filter-llvm-config.awk)
export LLVM_CONFIG_CFLAGS:=$(shell $(LLVM_CONFIG) --cflags | awk -f $(THIRD_PARTY_DIR)/llvm/filter-llvm-config.awk)
endif

# LLVM_VERSION, LLVM_MAJOR_VERSION, etc
include $(THIRD_PARTY_DIR)/llvm/Makefile.version

endif