diff --git a/support/corelib.make b/support/corelib.make index d23555c..e1432ba 100644 --- a/support/corelib.make +++ b/support/corelib.make @@ -88,33 +88,30 @@ ${XXSObjects} : ${PerlExtDir}/%.o : ${PerlExtDir}/%.cc $(_CXX_compile) @$(_do_deps) -# the dependence on Makefile.PL is necessary because if it happens to be newer than the XS sources or object files, -# the latter are mercilessly deleted. -${GlueObjects} ${CallableGlueObjects} ${XXSObjects} $(patsubst %,${PerlExtDir}/%.cc,${XXSModules}) : ${SourceDir}/perl/Makefile.PL | compile-xs - ${CoreLib} : ${SharedObjects} ${StandaloneObjects} ${CXX} ${LDsharedFlags} -o $@ $^ ${LDFLAGS} -lmpfr -lgmp -lpthread ${LIBS} ifneq (${LDcallableFlags},none) - # no explicit dependence on XSObjects here because they are built in compile-xs using the Makefile generated by xsubpp - ${CallableLib} : ${SharedObjects} ${CallableSharedObjects} ${GlueObjects} ${CallableGlueObjects} ${XXSObjects} $(patsubst %,${SourceDir}/perl/%.xs,${XSModules}) - ${CXX} ${LDcallableFlags} ${LDsonameFlag}${CallableSoName} -o $@ ${SharedObjects} ${CallableSharedObjects} ${GlueObjects} ${CallableGlueObjects} ${XXSObjects} ${XSObjects} ${LDFLAGS} ${PERLccdlflags} -lmpfr -lgmp -lpthread ${LIBXML2_LIBS} ${LIBS} -L${PERLarchlib}/CORE -lperl + ${CallableLib} : ${SharedObjects} ${CallableSharedObjects} ${GlueObjects} ${CallableGlueObjects} ${XXSObjects} ${XSObjects} + ${CXX} ${LDcallableFlags} ${LDsonameFlag}${CallableSoName} -o $@ $^ ${LDFLAGS} ${PERLccdlflags} \ + -lmpfr -lgmp -lpthread ${LIBXML2_LIBS} ${LIBS} -L${PERLarchlib}/CORE -lperl ln -s -f ${CallableSoName} ${PerlExtDir}/${CallableName} else - ${CallableLib} : ${GlueObjects} ${XXSObjects} $(patsubst %,${SourceDir}/perl/%.xs,${XSModules}) + ${CallableLib} : ${GlueObjects} ${XXSObjects} endif @$(MAKE) -C ${PerlExtDir} all LD=${CXX} OTHERLDFLAGS="${LDFLAGS}" GlueObjects="$(notdir ${GlueObjects} ${XXSObjects})" @$(MAKE) -C ${PerlExtDir} pure_install InstallDir=.. DESTDIR= -compile-xs: - @mkdir -p ${PerlExtDir} - cd ${PerlExtDir}; \ - ${PERL} ${SourceDir}/perl/Makefile.PL \ - TOP=${ProjectTop} SourceDir=${SourceDir}/perl CxxOpt="${CXXOPT}" CxxDebug="${CXXDEBUG}" \ - libxml2Cflags="${LIBXML2_CFLAGS}" libxml2Libs="${LIBXML2_LIBS}" +compile-xs : ${PerlExtDir}/Makefile @$(MAKE) -C ${PerlExtDir} compile -compile : ${CoreLib} ${CallableLib} +${PerlExtDir}/Makefile : ${SourceDir}/perl/Makefile.PL + @mkdir -p $(@D) + cd $(@D); ${PERL} $< TOP=${ProjectTop} SourceDir=${SourceDir}/perl CxxOpt="${CXXOPT}" CxxDebug="${CXXDEBUG}" \ + libxml2Cflags="${LIBXML2_CFLAGS}" libxml2Libs="${LIBXML2_LIBS}" + +compile : compile-xs + @$(MAKE) --no-print-directory ${CoreLib} ${CallableLib} install : compile [ -d ${InstallLib} ] || ${PERL} ${INSTALL_PL} -d -m ${DirMask} ${InstallLib}