ok, it worked just fine, here is the final diff for TestFilesCompilation.gmk:

> diff -r 028076b2832a -r caca95a834e3 make/common/TestFilesCompilation.gmk
> --- a/make/common/TestFilesCompilation.gmk    Thu Aug 16 16:28:03 2018 -0700
> +++ b/make/common/TestFilesCompilation.gmk    Fri Aug 24 14:12:37 2018 -0700
> @@ -60,13 +60,13 @@
>    ifeq ($$($1_TYPE), LIBRARY)
>      $1_PREFIX = lib
>      $1_OUTPUT_SUBDIR := lib
> -    $1_CFLAGS := $(CFLAGS_TESTLIB)
> +    $1_CFLAGS += $(CFLAGS_TESTLIB)
>      $1_LDFLAGS := $(LDFLAGS_TESTLIB) $(call SET_SHARED_LIBRARY_ORIGIN)
>      $1_COMPILATION_TYPE := LIBRARY
>    else ifeq ($$($1_TYPE), PROGRAM)
>      $1_PREFIX = exe
>      $1_OUTPUT_SUBDIR := bin
> -    $1_CFLAGS := $(CFLAGS_TESTEXE)
> +    $1_CFLAGS += $(CFLAGS_TESTEXE)
>      $1_LDFLAGS := $(LDFLAGS_TESTEXE)
>      $1_COMPILATION_TYPE := EXECUTABLE
>    else
> @@ -75,12 +75,12 @@
>  
>    # Locate all files with the matching prefix
>    $1_FILE_LIST := \
> -      $$(shell $$(FIND) $$($1_SOURCE_DIRS) -type f -name "$$($1_PREFIX)*.c")
> +      $$(shell $$(FIND) $$($1_SOURCE_DIRS) -type f \( -name 
> "$$($1_PREFIX)*.c" \
> +                                                   -o -name 
> "$$($1_PREFIX)*.cpp" \))
>  
>    $1_EXCLUDE_PATTERN := $$(addprefix %/, $$($1_EXCLUDE))
>    $1_FILTERED_FILE_LIST := $$(filter-out $$($1_EXCLUDE_PATTERN), 
> $$($1_FILE_LIST))
>  
> -  # Setup a compilation for each and every one of them
>    $$(foreach file, $$($1_FILTERED_FILE_LIST),\
>      $$(eval name := $$(strip $$(basename $$(notdir $$(file))))) \
>      $$(eval unprefixed_name := $$(patsubst $$($1_PREFIX)%, %, $$(name))) \
> @@ -94,6 +94,7 @@
>          CFLAGS := $$($1_CFLAGS) $$($1_CFLAGS_$$(name)), \
>          LDFLAGS := $$($1_LDFLAGS) $$($1_LDFLAGS_$$(name)), \
>          LIBS := $$($1_LIBS_$$(name)), \
> +        TOOLCHAIN := $(if $$(filter %.cpp, $$(file)), TOOLCHAIN_LINK_CXX, 
> TOOLCHAIN_DEFAULT), \
>          OPTIMIZATION := LOW, \
>          COPY_DEBUG_SYMBOLS := false, \
>          STRIP_SYMBOLS := false, \

Thanks,
-- Igor


> On Aug 24, 2018, at 10:36 AM, Igor Ignatev <igor.ignat...@oracle.com> wrote:
> 
> Hi Erik,
> 
> Unfortunately, just adding .cpp files to file list isn’t enough, as I 
> mentioned in one of my previous emails[1], initially I did exactly that and 
> linux-slowdebug build fails b/c c-linker was be used for .o files produced by 
> cpp-compiler.
> 
> I guess something like [2] might work. I'll play w/ this idea and send final 
> patch latch.
> 
> — Igor
> 
> [1] http://mail.openjdk.java.net/pipermail/build-dev/2018-August/022922.html
> [2] TOOLCHAIN := $(if $$(filter %.cpp, $$(file)), TOOLCHAIN_LINK_CXX, 
> TOOLCHAIN_DEFAULT)
> 
>> On Aug 23, 2018, at 11:31 PM, Erik Joelsson <erik.joels...@oracle.com> wrote:
>> 
>> Hello Igor,
>> 
>> In TestFilesCompilation.gmk, there is no need to duplicate the whole macro 
>> call. If you want to find .cpp as well as .c files, just add that to the one 
>> list of files. The SetupNativeCompilation macro will automatically treat .c 
>> and .cpp correctly.
>> 
>> Regarding the .c/.cpp files for your vmtestbase tests that include all the 
>> other files, this is an unfortunate solution, but I guess OK if it works. We 
>> certainly didn't intend it that way. The macro SetupTestFilesCompilation was 
>> intended for easily writing single file native exe and lib binaries without 
>> having to modify any makefile. The expectation was that if anything more 
>> complicated was needed (like multiple files per binary), we would just write 
>> explicit SetupNativeCompilation calls for them in JtregNativeHotspot.gmk. It 
>> now looks like we have a new pattern of source files/directories that turns 
>> into native libraries, and we could of course create a new macro that 
>> automatically generates compilation setups for them as well (given that file 
>> or directory names makes it possible to automatically determine everything 
>> needed). Of course, that change would be a separate cleanup possible if you 
>> want to.
>> 
>> /Erik
>> 
>>> On 2018-08-20 15:59, Igor Ignatyev wrote:
>>> http://cr.openjdk.java.net/~iignatyev//8209611/webrev.01/index.html
>>>> 11160 lines changed: 879 ins; 61 del; 10220 mod;
>>> Hi all,
>>> 
>>> could you please review the patch which moves all hotspot native test code 
>>> to C++? this will guarantee that we always use C++ compilers for them (as 
>>> an opposite to either C or C++ compiler depending on configuration), as a 
>>> result we will be able to get rid of JNI_ENV_ARG[1] macros, perform other 
>>> clean ups and improve overall quality of the test code.
>>> 
>>> the patch consists of two parts:
>>> - automatic: renaming .c files to .cpp, updating #include, changing 
>>> JNI/JVMTI calls
>>> - semi-manual: adding extern "C" , fixing a number of compiler warnings 
>>> (mostly types inconsistency), updating makefiles
>>> 
>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8209611
>>> webrevs:
>>> - automatic: 
>>> http://cr.openjdk.java.net/~iignatyev//8209611/webrev.00/index.html
>>>> 9394 lines changed: 0 ins; 0 del; 9394 mod;
>>> - semi-manual: 
>>> http://cr.openjdk.java.net/~iignatyev//8209611/webrev.0-1/index.html
>>>> 1899 lines changed: 879 ins; 61 del; 959 mod
>>> - whole: http://cr.openjdk.java.net/~iignatyev//8209611/webrev.01/index.html
>>>> 11160 lines changed: 879 ins; 61 del; 10220 mod;
>>> testing: all hotspot tests + tier[1-3]
>>> 
>>> [1] https://bugs.openjdk.java.net/browse/JDK-8209547
>>> 
>>> Thanks,
>>> -- Igor
>> 

Reply via email to