From 787596d0053583a44335ffa63e4eff9f23d93405 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20B=C3=B6ker?= Date: Fri, 22 Mar 2019 19:23:22 +0100 Subject: [PATCH] Fix build on MSVC. --- Configure.pl | 9 +++++++-- tools/build/Makefile-Moar.in | 15 +++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/Configure.pl b/Configure.pl index 7ed08012dfe..f2ffeb56649 100755 --- a/Configure.pl +++ b/Configure.pl @@ -318,7 +318,9 @@ $config{ldflags} =~ s/\Q$nqp_config{'moar::ldrpath'}\E ?//; $config{ldflags} =~ s/\Q$nqp_config{'moar::ldrpath_relocatable'}\E ?//; $config{ldflags} .= ' ' . ($options{'no-relocatable'} ? $nqp_config{'moar::ldrpath'} : $nqp_config{'moar::ldrpath_relocatable'}); - + + my @c_runner_libs; + if ($win) { if ($prefix . $slash . 'bin' ne $nqp_config{'moar::libdir'}) { $config{'m_install'} = "\t" . '$(CP) ' . $nqp_config{'moar::libdir'} . $slash . $nqp_config{'moar::moar'} . ' $(PREFIX)' . $slash . 'bin'; @@ -327,7 +329,7 @@ if ($nqp_config{'moar::os'} eq 'mingw32') { $config{'mingw_unicode'} = '-municode'; } - $config{'c_runner_libs'} = '-lShlwapi'; + push @c_runner_libs, 'Shlwapi'; } else { $config{'m_cleanups'} = " \$(M_GDB_RUNNER) \\\n \$(M_LLDB_RUNNER) \\\n \$(M_VALGRIND_RUNNER)"; $config{'m_all'} = '$(M_GDB_RUNNER) $(M_LLDB_RUNNER) $(M_VALGRIND_RUNNER)'; @@ -335,6 +337,9 @@ . "\t" . '$(M_RUN_PERL6) tools/build/create-moar-runner.p6 perl6 $(M_RUNNER) $(DESTDIR)$(PREFIX)/bin/perl6-lldb-m "lldb" "" "" ""' . "\n" . "\t" . '$(M_RUN_PERL6) tools/build/create-moar-runner.p6 perl6 $(M_RUNNER) $(DESTDIR)$(PREFIX)/bin/perl6-valgrind-m "valgrind" "" "" ""'; } + $config{'c_runner_libs'} = join ' ', + (map { sprintf $nqp_config{'moar::ldusr'}, $_; } @c_runner_libs), + $nqp_config{'moar::sharedlib'}; unless (@errors) { print "Using $config{'m_nqp'} (version $nqp_config{'nqp::version'} / MoarVM $nqp_config{'moar::version'}).\n"; diff --git a/tools/build/Makefile-Moar.in b/tools/build/Makefile-Moar.in index 5aa9f342601..15e1dc2d7b4 100644 --- a/tools/build/Makefile-Moar.in +++ b/tools/build/Makefile-Moar.in @@ -1,5 +1,6 @@ M_CC = @moar::cc@ M_LD = @moar::ld@ +M_CCINC = @moar::ccinc@ M_CFLAGS = @moar::cflags@ @moar::ccmiscflags@ @moar::ccoptiflags@ @moar::ccwarnflags@ M_LDFLAGS = @ldflags@ M_C_RUNNER_LIBS = @c_runner_libs@ @@ -226,16 +227,18 @@ $(M_VALGRIND_RUNNER): tools/build/create-moar-runner.p6 $(M_C_RUNNER) $(PERL6_MO $(M_C_RUNNER): src/vm/moar/runner/main.c $(RM_F) $(M_C_RUNNER) # Using only the pkgconfig moar includes does not work, because moar.h assumes all the specific includes below. - $(M_CC) @moar::ccshared@ @static_nqp_home_define@ @static_perl6_home_define@ $(M_CFLAGS) $(M_LDFLAGS) -I$(M_INCPATH) -I$(M_INCPATH)/moar \ - -I$(M_INCPATH)/libatomic_ops -I$(M_INCPATH)/dyncall -I$(M_INCPATH)/sha1 -I$(M_INCPATH)/tinymt -I$(M_INCPATH)/libtommath -I$(M_INCPATH)/libuv \ - -L@moar::libdir@ $(M_MINGW_UNICODE) @moar::ccout@$@ src/vm/moar/runner/main.c -lmoar $(M_C_RUNNER_LIBS) + $(M_CC) @moar::ccswitch@ @static_nqp_home_define@ @static_perl6_home_define@ $(M_CFLAGS) $(M_CCINC)$(M_INCPATH) $(M_CCINC)$(M_INCPATH)/moar \ + $(M_CCINC)$(M_INCPATH)/libatomic_ops $(M_CCINC)$(M_INCPATH)/dyncall $(M_CCINC)$(M_INCPATH)/moar $(M_CCINC)$(M_INCPATH)/sha1 $(M_CCINC)$(M_INCPATH)/tinymt $(M_CCINC)$(M_INCPATH)/libtommath $(M_CCINC)$(M_INCPATH)/libuv \ + $(M_MINGW_UNICODE) @moar::ccout@main@moar::obj@ src/vm/moar/runner/main.c + $(M_LD) @moar::ldout@$@ $(M_LDFLAGS) main@moar::obj@ @moar::lddir@@moar::libdir@ $(M_C_RUNNER_LIBS) $(M_C_DEBUG_RUNNER): src/vm/moar/runner/main.c $(RM_F) $(M_C_DEBUG_RUNNER) # Using only the pkgconfig moar includes does not work, because moar.h assumes all the specific includes below. - $(M_CC) @moar::ccshared@ @static_nqp_home_define@ @static_perl6_home_define@ -DMOAR_PERL6_RUNNER_DEBUG $(M_CFLAGS) $(M_LDFLAGS) -I$(M_INCPATH) -I$(M_INCPATH)/moar \ - -I$(M_INCPATH)/libatomic_ops -I$(M_INCPATH)/dyncall -I$(M_INCPATH)/moar -I$(M_INCPATH)/sha1 -I$(M_INCPATH)/tinymt -I$(M_INCPATH)/libtommath -I$(M_INCPATH)/libuv \ - -L@moar::libdir@ $(M_MINGW_UNICODE) @moar::ccout@$@ src/vm/moar/runner/main.c -lmoar $(M_C_RUNNER_LIBS) + $(M_CC) @moar::ccswitch@ @static_nqp_home_define@ @static_perl6_home_define@ -DMOAR_PERL6_RUNNER_DEBUG $(M_CFLAGS) $(M_CCINC)$(M_INCPATH) $(M_CCINC)$(M_INCPATH)/moar \ + $(M_CCINC)$(M_INCPATH)/libatomic_ops $(M_CCINC)$(M_INCPATH)/dyncall $(M_CCINC)$(M_INCPATH)/moar $(M_CCINC)$(M_INCPATH)/sha1 $(M_CCINC)$(M_INCPATH)/tinymt $(M_CCINC)$(M_INCPATH)/libtommath $(M_CCINC)$(M_INCPATH)/libuv \ + $(M_MINGW_UNICODE) @moar::ccout@main@moar::obj@ src/vm/moar/runner/main.c + $(M_LD) @moar::ldout@$@ $(M_LDFLAGS) main@moar::obj@ @moar::lddir@@moar::libdir@ $(M_C_RUNNER_LIBS) ## testing targets