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

Subfolder for the configure script #9393

Merged
merged 6 commits into from Aug 20, 2021
Merged
Show file tree
Hide file tree
Changes from 2 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
9 changes: 7 additions & 2 deletions conan/tools/gnu/autotools.py
@@ -1,3 +1,4 @@
import os
from conan.tools.files import load_toolchain_args
from conan.tools.gnu.make import make_jobs_cmd_line_arg
from conan.tools.microsoft import unix_path
Expand All @@ -13,7 +14,7 @@ def __init__(self, conanfile):
self._configure_args = toolchain_file_content.get("configure_args")
self._make_args = toolchain_file_content.get("make_args")

def configure(self):
def configure(self, source_folder=None):
lasote marked this conversation as resolved.
Show resolved Hide resolved
"""
http://jingfenghanmax.blogspot.com.es/2010/09/configure-with-host-target-and-build.html
https://gcc.gnu.org/onlinedocs/gccint/Configure-Terms.html
Expand All @@ -22,7 +23,11 @@ def configure(self):
if not self._conanfile.should_configure:
return

configure_cmd = "{}/configure".format(self._conanfile.source_folder)
source = self._conanfile.source_folder
if source_folder:
source = os.path.join(self._conanfile.source_folder, source_folder)

configure_cmd = "{}/configure".format(source)
configure_cmd = unix_path(self._conanfile, configure_cmd)
cmd = "{} {}".format(configure_cmd, self._configure_args)
self._conanfile.output.info("Calling:\n > %s" % cmd)
Expand Down
26 changes: 26 additions & 0 deletions conans/test/unittests/tools/gnu/autotools_test.py
@@ -0,0 +1,26 @@
import os
import textwrap

from conan.tools.files import save_toolchain_args
from conan.tools.gnu import Autotools
from conans.test.utils.mocks import ConanFileMock
from conans.test.utils.test_files import temp_folder


def test_source_folder_works():
folder = temp_folder()
os.chdir(folder)
save_toolchain_args({
"configure_args": "-foo bar",
"make_args": ""}
)
conanfile = ConanFileMock()
conanfile.folders.set_base_install(folder)
sources = "/path/to/sources"
conanfile.folders.set_base_source(sources)
autotools = Autotools(conanfile)
autotools.configure(source_folder="subfolder")
assert conanfile.command.replace("\\", "/") == "/path/to/sources/subfolder/configure -foo bar"

autotools.configure()
assert conanfile.command.replace("\\", "/") == "/path/to/sources/configure -foo bar"