Developer Guide and Reference

Contents

Modifying Your makefile

If you use makefiles to build your GCC* application, you need to change the value for the GCC compiler variable to use the
Intel® oneAPI
DPC++/C++
Compiler
. You may also want to review the options specified by
CFLAGS
. For example:

Sample GCC makefile
# Use gcc compiler CC = gcc # Compile-time flags CFLAGS = -O2 -std=c99 all: area_app area_app: area_main.o area_functions.o     $(CC) area_main.o area_functions.o -o area area_main.o: area_main.c     $(CC) -c $(CFLAGS) area_main.c area_functions.o: area_functions.c     $(CC) -c -fno-asm $(CFLAGS) area_functions.c clean: rm -rf *o area
Sample makefile modified for the
Intel® oneAPI
DPC++/C++
Compiler
# Use Intel C/C++/DPC++ Compiler CC = [invocation] # Compile-time flags CFLAGS = -std=c99 all: area_app area_app: area_main.o area_functions.o     $(CC) area_main.o area_functions.o -o area area_main.o: area_main.c     $(CC) -c $(CFLAGS) area_main.c area_functions.o: area_functions.c     $(CC) -c -fno-asm $(CFLAGS) area_functions.c clean: rm -rf *o area
With [invocation] being
icx
or
dpcpp
.
If your GCC code includes features that are not supported with the
Intel® oneAPI
DPC++/C++
Compiler
(compiler options, language extensions, macros, pragmas, and so on), you can compile those sources separately with GCC if necessary.
In the above makefile,
area_functions.c
is an example of a source file that includes features unique to GCC. Because the
Intel® oneAPI
DPC++/C++
Compiler
uses the
O2
option by default and GCC uses option
O0
as the default, we instruct GCC to compile at option
O2
. We also include the
-fno-asm
switch from the original makefile because this switch is not supported with the
Intel® oneAPI
DPC++/C++
Compiler
.
Sample makefile modified for using the
Intel® oneAPI
DPC++/C++
Compiler
and GCC together
# Use Intel C/C++/DPC++ Compiler CC = [invocation] # Use gcc for files that cannot be compiled by [invocation] GCC = gcc # Compile-time flags CFLAGS = -std=c99 all: area_app area_app: area_main.o area_functions.o $(CC) area_main.o area_functions.o -o area area_main.o: area_main.c $(CC) -c $(CFLAGS) area_main.c area_functions.o: area_functions.c $(GCC) -c -O2 -fno-asm $(CFLAGS) area_functions.c clean: rm -rf *o area
With [invocation] being
icpx
or
dpcpp
.
Output of
make
using a modified makefile
[invocation] -c -std=c99 area_main.c gcc -c -O2 -fno-asm -std=c99 area_functions.c [invocation] area_main.o area_functions.o -o area
With [invocation] being
icpx
or
dpcpp
.
Using IPO in Makefiles
By default, IPO generates "dummy" object files containing Interprocedural information used by the compiler. To link or create static libraries with these object files requires special Intel®-provided tools. To use them in your makefile, simply replace references to "ld" with "xild" and references to "ar" with "xiar", or use
icx
or
icpx
for C++ or
dpcpp
for DPC++
to link as shown below.
Sample makefile modified for the
Intel® oneAPI
DPC++/C++
Compiler
with IPO
# Use Intel C/C++/DPC++ Compiler CC = [invocation] # Compile-time flags CFLAGS = -std=c99 -ipo all: area_app area_app: area_main.o area_functions.o $(CC) area_main.o area_functions.o -o area area_main.o: area_main.c $(CC) -c $(CFLAGS) area_main.c area_functions.o: area_functions.c $(CC) -c $(CFLAGS) area_functions.c clean: rm -rf *o area
With [invocation] being
icpx
or
dpcpp
.

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.