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 5 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
6 changes: 3 additions & 3 deletions conan/tools/cmake/cmake.py
Expand Up @@ -73,14 +73,14 @@ def __init__(self, conanfile, parallel=True):

self._cmake_program = "cmake" # Path to CMake should be handled by environment

def configure(self, source_folder=None):
def configure(self, build_script_folder=None):
# TODO: environment?
if not self._conanfile.should_configure:
return

source = self._conanfile.source_folder
if source_folder:
source = os.path.join(self._conanfile.source_folder, source_folder)
if build_script_folder:
source = os.path.join(self._conanfile.source_folder, build_script_folder)
lasote marked this conversation as resolved.
Show resolved Hide resolved

build_folder = self._conanfile.build_folder
generator_folder = self._conanfile.generators_folder
Expand Down
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, build_script_folder=None):
"""
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 build_script_folder:
source = os.path.join(self._conanfile.source_folder, build_script_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
Expand Up @@ -74,7 +74,7 @@ class AppleframeworkConan(ConanFile):

def build(self):
cmake = CMake(self)
cmake.configure(source_folder="src")
cmake.configure(build_script_folder="src")
lasote marked this conversation as resolved.
Show resolved Hide resolved
cmake.build()
cmake.install()
self.run("otool -L '%s/hello.framework/hello'" % self.build_folder)
Expand Down
Expand Up @@ -175,7 +175,7 @@ class Recipe(ConanFile):

def build(self):
cmake = CMake(self)
cmake.configure(source_folder="src")
cmake.configure(build_script_folder="src")
lasote marked this conversation as resolved.
Show resolved Hide resolved
cmake.build()

def package(self):
Expand Down
Expand Up @@ -36,7 +36,7 @@ class GreetingsConan(ConanFile):

def build(self):
cmake = CMake(self)
cmake.configure(source_folder="src")
cmake.configure(build_script_folder="src")
cmake.build()

def package(self):
Expand Down Expand Up @@ -143,7 +143,7 @@ class Chat(ConanFile):

def build(self):
cmake = CMake(self)
cmake.configure(source_folder="src")
cmake.configure(build_script_folder="src")
cmake.build()

def package(self):
Expand Down Expand Up @@ -359,7 +359,7 @@ class HelloConan(ConanFile):

def build(self):
cmake = CMake(self)
cmake.configure(source_folder="src")
cmake.configure(build_script_folder="src")
cmake.build()

def package(self):
Expand Down Expand Up @@ -531,7 +531,7 @@ class Conan(ConanFile):

def build(self):
cmake = CMake(self)
cmake.configure(source_folder="src")
cmake.configure(build_script_folder="src")
cmake.build()

def package(self):
Expand Down Expand Up @@ -587,7 +587,7 @@ class Conan(ConanFile):

def build(self):
cmake = CMake(self)
cmake.configure(source_folder="src")
cmake.configure(build_script_folder="src")
cmake.build()

def package(self):
Expand Down Expand Up @@ -616,7 +616,7 @@ class Conan(ConanFile):

def build(self):
cmake = CMake(self)
cmake.configure(source_folder="src")
cmake.configure(build_script_folder="src")
cmake.build()
self.run(".%smain" % os.sep)
""".format("CMakeDeps"))
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(build_script_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"