From 25bc79f2b9f60c43cdedd91a738f087954c4228f Mon Sep 17 00:00:00 2001 From: dimitri Date: Sun, 25 Jun 2017 20:15:34 +0200 Subject: [PATCH 01/10] Added basic conan files. --- build/conan/.gitignore | 17 ++++ build/conan/FindGLEW.cmake | 16 ++++ build/conan/conanfile.py | 115 ++++++++++++++++++++++++ build/conan/test_package/CMakeLists.txt | 13 +++ build/conan/test_package/conanfile.py | 24 +++++ build/conan/test_package/main.c | 6 ++ 6 files changed, 191 insertions(+) create mode 100644 build/conan/.gitignore create mode 100644 build/conan/FindGLEW.cmake create mode 100644 build/conan/conanfile.py create mode 100644 build/conan/test_package/CMakeLists.txt create mode 100644 build/conan/test_package/conanfile.py create mode 100644 build/conan/test_package/main.c diff --git a/build/conan/.gitignore b/build/conan/.gitignore new file mode 100644 index 0000000..088fc73 --- /dev/null +++ b/build/conan/.gitignore @@ -0,0 +1,17 @@ +#Backup files +*\~ +*swp + +#OSX +Thumbs.db +.DS_Store + +#Emacs buffers +\#*\# +\.#* + +#Conan +test_package/build +conanfile.pyc +conaninfo.txt +conanbuildinfo.cmake diff --git a/build/conan/FindGLEW.cmake b/build/conan/FindGLEW.cmake new file mode 100644 index 0000000..25f7ba7 --- /dev/null +++ b/build/conan/FindGLEW.cmake @@ -0,0 +1,16 @@ +find_path(GLEW_INCLUDE_DIR NAMES GL PATHS include) +find_library(GLEW_LIBRARY NAMES GLEW GLEWd glew32 glew32s glew32d glew32sd PATHS lib ) + +MESSAGE("** GLEW FOUND BY CONAN") +SET(GLEW_FOUND TRUE) +MESSAGE("** FOUND GLEW: ${GLEW_LIBRARY}") +MESSAGE("** FOUND GLEW INCLUDE: ${GLEW_INCLUDE_DIR}") + +set(GLEW_INCLUDE_DIRS ${GLEW_INCLUDE_DIR}) +set(GLEW_LIBRARIES ${GLEW_LIBRARY}) + +mark_as_advanced(GLEW_LIBRARY GLEW_INCLUDE_DIR) + +set(GLEW_MAJOR_VERSION "2") +set(GLEW_MINOR_VERSION "0") +set(GLEW_PATCH_VERSION "0") diff --git a/build/conan/conanfile.py b/build/conan/conanfile.py new file mode 100644 index 0000000..477d9f8 --- /dev/null +++ b/build/conan/conanfile.py @@ -0,0 +1,115 @@ +import os +from conans import ConanFile, CMake, VisualStudioBuildEnvironment, tools +from conans.tools import build_sln_command, vcvars_command, download, unzip, replace_in_file, os_info, SystemPackageTool + +class GlewConan(ConanFile): + name = "glew" + version = "2.0.0" + description = "The GLEW library" + ZIP_FOLDER_NAME = "%s-%s" % (name, version) + generators = "cmake", "txt" + settings = "os", "arch", "build_type", "compiler" + options = {"shared": [True, False]} + default_options = "shared=False" + url="http://github.com/dimi309/conan-packages" + requires = "" + license="https://github.com/nigels-com/glew#copyright-and-licensing" + exports = "FindGLEW.cmake" + + def system_requirements(self): + if os_info.is_linux: + if os_info.with_apt: + installer = SystemPackageTool() + installer.install("libglu1-mesa-dev") + elif os_info.with_yum: + installer = SystemPackageTool() + installer.install("mesa-libGLU-devel") + else: + self.output.warn("Could not determine Linux package manager, skipping system requirements installation.") + + def configure(self): + del self.settings.compiler.libcxx + + def source(self): + zip_name = "%s.tgz" % self.ZIP_FOLDER_NAME + download("https://sourceforge.net/projects/glew/files/glew/%s/%s/download" % (self.version, zip_name), zip_name) + unzip(zip_name) + os.unlink(zip_name) + + def build(self): + if self.settings.compiler == "Visual Studio": + env = VisualStudioBuildEnvironment(self) + with tools.environment_append(env.vars): + version = min(12, int(self.settings.compiler.version.value)) + version = 10 if version == 11 else version + cd_build = "cd %s\\%s\\build\\vc%s" % (self.conanfile_directory, self.ZIP_FOLDER_NAME, version) + build_command = build_sln_command(self.settings, "glew.sln") + vcvars = vcvars_command(self.settings) + self.run("%s && %s && %s" % (vcvars, cd_build, build_command.replace("x86", "Win32"))) + else: + if self.settings.os == "Windows": + replace_in_file("%s/build/cmake/CMakeLists.txt" % self.ZIP_FOLDER_NAME, \ + "if(WIN32 AND (NOT MSVC_VERSION LESS 1600)", \ + "if(WIN32 AND MSVC AND (NOT MSVC_VERSION LESS 1600)") + cmake = CMake(self) + cmake.configure(source_dir="%s/build/cmake" % self.ZIP_FOLDER_NAME, defs={"BUILD_UTILS": "OFF"}) + cmake.build() + + def package(self): + self.copy("FindGLEW.cmake", ".", ".") + self.copy("include/*", ".", "%s" % (self.ZIP_FOLDER_NAME), keep_path=True) + self.copy("%s/license*" % self.ZIP_FOLDER_NAME, dst="licenses", ignore_case=True, keep_path=False) + + if self.settings.os == "Windows": + if self.settings.compiler == "Visual Studio": + if self.options.shared: + self.copy(pattern="*32.lib", dst="lib", keep_path=False) + self.copy(pattern="*32d.lib", dst="lib", keep_path=False) + self.copy(pattern="*.dll", dst="bin", keep_path=False) + self.copy(pattern="*.pdb", dst="bin", keep_path=False) + else: + self.copy(pattern="*32s.lib", dst="lib", keep_path=False) + self.copy(pattern="*32sd.lib", dst="lib", keep_path=False) + else: + if self.options.shared: + self.copy(pattern="*32.dll.a", dst="lib", keep_path=False) + self.copy(pattern="*.dll", dst="bin", keep_path=False) + else: + self.copy(pattern="*32.a", dst="lib", keep_path=False) + elif self.settings.os == "Macos": + if self.options.shared: + self.copy(pattern="*.dylib", dst="lib", keep_path=False) + else: + self.copy(pattern="*.a", dst="lib", keep_path=False) + else: + if self.options.shared: + self.copy(pattern="*.so", dst="lib", keep_path=False) + else: + self.copy(pattern="*.a", dst="lib", keep_path=False) + + def package_info(self): + if self.settings.os == "Windows": + self.cpp_info.libs = ['glew32'] + + if not self.options.shared: + self.cpp_info.defines.append("GLEW_STATIC") + + if self.settings.compiler == "Visual Studio": + if not self.options.shared: + self.cpp_info.libs[0] += "s" + self.cpp_info.libs.append("OpenGL32.lib") + if self.settings.compiler.runtime != "MT": + self.cpp_info.exelinkflags.append('-NODEFAULTLIB:LIBCMTD') + self.cpp_info.exelinkflags.append('-NODEFAULTLIB:LIBCMT') + else: + self.cpp_info.libs.append("opengl32") + + else: + self.cpp_info.libs = ['GLEW'] + if self.settings.os == "Macos": + self.cpp_info.exelinkflags.append("-framework OpenGL") + elif not self.options.shared: + self.cpp_info.libs.append("GL") + + if self.settings.build_type == "Debug": + self.cpp_info.libs[0] += "d" diff --git a/build/conan/test_package/CMakeLists.txt b/build/conan/test_package/CMakeLists.txt new file mode 100644 index 0000000..358ad28 --- /dev/null +++ b/build/conan/test_package/CMakeLists.txt @@ -0,0 +1,13 @@ +project(GlewTest) +cmake_minimum_required(VERSION 3.0.0) +include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) +conan_basic_setup() + +set(CMAKE_C_FLAGS "${CONAN_C_FLAGS}") +set(CMAKE_CXX_FLAGS "${CONAN_CXX_FLAGS}") +set(CMAKE_SHARED_LINKER_FLAGS "${CONAN_SHARED_LINKER_FLAGS}") + +add_executable(testGlew main.c) +TARGET_COMPILE_DEFINITIONS(testGlew PUBLIC "${CONAN_DEFINES}") +TARGET_LINK_LIBRARIES(testGlew PUBLIC "${CONAN_LIBS}") +SET_TARGET_PROPERTIES(testGlew PROPERTIES LINK_FLAGS "${CONAN_EXE_LINKER_FLAGS}") diff --git a/build/conan/test_package/conanfile.py b/build/conan/test_package/conanfile.py new file mode 100644 index 0000000..c452d51 --- /dev/null +++ b/build/conan/test_package/conanfile.py @@ -0,0 +1,24 @@ +from conans import ConanFile, CMake +import os + +channel = os.getenv("CONAN_CHANNEL", "testing") +username = os.getenv("CONAN_USERNAME", "dimi309") + +class TestGlew(ConanFile): + settings = "os", "compiler", "build_type", "arch" + requires = "glew/2.0.0@%s/%s" % (username, channel) + generators = "cmake" + + def build(self): + cmake = CMake(self) + self.run('cmake "%s" %s' % (self.conanfile_directory, cmake.command_line)) + self.run("cmake --build . %s" % cmake.build_config) + + def test(self): + self.run(os.sep.join([".","bin", "testGlew"])) + + def imports(self): + if self.settings.os == "Windows": + self.copy(pattern="*.dll", dst="bin", src="bin") + if self.settings.os == "Macos": + self.copy(pattern="*.dylib", dst="bin", src="lib") diff --git a/build/conan/test_package/main.c b/build/conan/test_package/main.c new file mode 100644 index 0000000..5e250f7 --- /dev/null +++ b/build/conan/test_package/main.c @@ -0,0 +1,6 @@ +#include "GL/glew.h" + +int main (){ + glewGetString(GLEW_VERSION); + return 0; +} From cf469ab200db3bcf2ef7bb46faa800ec18ea67e7 Mon Sep 17 00:00:00 2001 From: dimitri Date: Sun, 25 Jun 2017 21:41:28 +0200 Subject: [PATCH 02/10] Added conan packaging support. --- .travis.yml | 75 +++++++++++++++++---------- .travis.yml.main | 29 +++++++++++ build/conan/.travis/install.sh | 24 +++++++++ build/conan/.travis/run.sh | 13 +++++ build/conan/build.py | 12 +++++ build/conan/conanfile.py | 61 ++++++++++++---------- build/conan/test_package/conanfile.py | 4 +- 7 files changed, 162 insertions(+), 56 deletions(-) create mode 100644 .travis.yml.main create mode 100644 build/conan/.travis/install.sh create mode 100755 build/conan/.travis/run.sh create mode 100644 build/conan/build.py diff --git a/.travis.yml b/.travis.yml index 021066d..0582390 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,29 +1,50 @@ -language: cpp -sudo: false + +env: + global: + - CONAN_USERNAME="nigels-com" + - CONAN_REFERENCE="glew/master" + - CONAN_CHANNEL="testing" + - CONAN_REMOTES="https://api.bintray.com/conan/dimi309/conan-packages" + - CONAN_UPLOAD="https://api.bintray.com/conan/dimi309/conan-packages" + +linux: &linux + os: linux + sudo: required + language: python + python: "2.7" + services: + - docker +osx: &osx + os: osx + language: generic +matrix: + include: + + - <<: *linux + env: CONAN_GCC_VERSIONS=4.9 CONAN_DOCKER_IMAGE=lasote/conangcc49 + - <<: *linux + env: CONAN_GCC_VERSIONS=5.4 CONAN_DOCKER_IMAGE=lasote/conangcc54 + - <<: *linux + env: CONAN_GCC_VERSIONS=6.3 CONAN_DOCKER_IMAGE=lasote/conangcc63 + - <<: *linux + env: CONAN_CLANG_VERSIONS=3.9 CONAN_DOCKER_IMAGE=lasote/conanclang39 + - <<: *linux + env: CONAN_CLANG_VERSIONS=4.0 CONAN_DOCKER_IMAGE=lasote/conanclang40 + - <<: *osx + osx_image: xcode7.3 + env: CONAN_APPLE_CLANG_VERSIONS=7.3 + - <<: *osx + osx_image: xcode8.2 + env: CONAN_APPLE_CLANG_VERSIONS=8.0 + - <<: *osx + osx_image: xcode8.3 + env: CONAN_APPLE_CLANG_VERSIONS=8.1 + install: + - chmod +x ./build/conan/.travis/install.sh + - ./build/conan/.travis/install.sh script: -- make -C auto clobber -- make extensions -- make dist-src -- make clean; SYSTEM=linux make -- make clean; SYSTEM=linux-osmesa make -- make clean; SYSTEM=linux-egl make -- make clean; SYSTEM=linux-clang make -- make clean; SYSTEM=linux-clang-egl make -- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' . ; make; popd -- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' -DGLEW_OSMESA=1 . ; make; popd -- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' -DGLEW_EGL=1 . ; make; popd -addons: - apt: - packages: - - git - - cmake - - dos2unix - - libosmesa6-dev - - libegl1-mesa-dev - artifacts: - bucket: glew - s3_region: "us-east-1" - paths: - - $(ls *.zip *.tgz | tr "\n" ":") - - $(find doc -type f | tr "\n" ":") + - cp -rf ./build/conan/* . + - cp -rf ./build/conan/.travis . + - chmod +x .travis/run.sh + - .travis/run.sh diff --git a/.travis.yml.main b/.travis.yml.main new file mode 100644 index 0000000..021066d --- /dev/null +++ b/.travis.yml.main @@ -0,0 +1,29 @@ +language: cpp +sudo: false +install: +script: +- make -C auto clobber +- make extensions +- make dist-src +- make clean; SYSTEM=linux make +- make clean; SYSTEM=linux-osmesa make +- make clean; SYSTEM=linux-egl make +- make clean; SYSTEM=linux-clang make +- make clean; SYSTEM=linux-clang-egl make +- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' . ; make; popd +- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' -DGLEW_OSMESA=1 . ; make; popd +- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' -DGLEW_EGL=1 . ; make; popd +addons: + apt: + packages: + - git + - cmake + - dos2unix + - libosmesa6-dev + - libegl1-mesa-dev + artifacts: + bucket: glew + s3_region: "us-east-1" + paths: + - $(ls *.zip *.tgz | tr "\n" ":") + - $(find doc -type f | tr "\n" ":") diff --git a/build/conan/.travis/install.sh b/build/conan/.travis/install.sh new file mode 100644 index 0000000..9e406f3 --- /dev/null +++ b/build/conan/.travis/install.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +set -e +set -x + +if [[ "$(uname -s)" == 'Darwin' ]]; then + brew update || brew update + brew outdated pyenv || brew upgrade pyenv + brew install pyenv-virtualenv + brew install cmake || true + + if which pyenv > /dev/null; then + eval "$(pyenv init -)" + fi + + pyenv install 2.7.10 + pyenv virtualenv 2.7.10 conan + pyenv rehash + pyenv activate conan + +fi + +pip install conan_package_tools +conan user diff --git a/build/conan/.travis/run.sh b/build/conan/.travis/run.sh new file mode 100755 index 0000000..0a3488e --- /dev/null +++ b/build/conan/.travis/run.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -e +set -x + +if [[ "$(uname -s)" == 'Darwin' ]]; then + if which pyenv > /dev/null; then + eval "$(pyenv init -)" + fi + pyenv activate conan +fi + +python build.py diff --git a/build/conan/build.py b/build/conan/build.py new file mode 100644 index 0000000..43b1b55 --- /dev/null +++ b/build/conan/build.py @@ -0,0 +1,12 @@ +from conan.packager import ConanMultiPackager +import os, platform + +if __name__ == "__main__": + builder = ConanMultiPackager(args="--build missing") + builder.add_common_builds() + filtered_builds = [] + for settings, options, env_vars, build_requires in builder.builds: + if not (settings["arch"] == "x86"): + filtered_builds.append([settings, options, env_vars, build_requires]) + builder.builds = filtered_builds + builder.run() diff --git a/build/conan/conanfile.py b/build/conan/conanfile.py index 477d9f8..9b20477 100644 --- a/build/conan/conanfile.py +++ b/build/conan/conanfile.py @@ -1,28 +1,39 @@ import os -from conans import ConanFile, CMake, VisualStudioBuildEnvironment, tools -from conans.tools import build_sln_command, vcvars_command, download, unzip, replace_in_file, os_info, SystemPackageTool +from conans import ConanFile, CMake +from conans.tools import os_info, SystemPackageTool, ConanException +# from conans import tools, VisualStudioBuildEnvironment +from conans.tools import build_sln_command, vcvars_command, replace_in_file class GlewConan(ConanFile): name = "glew" - version = "2.0.0" + version = "master" description = "The GLEW library" - ZIP_FOLDER_NAME = "%s-%s" % (name, version) generators = "cmake", "txt" settings = "os", "arch", "build_type", "compiler" options = {"shared": [True, False]} default_options = "shared=False" - url="http://github.com/dimi309/conan-packages" - requires = "" + url="http://github.com/nigels-com/glew" license="https://github.com/nigels-com/glew#copyright-and-licensing" - exports = "FindGLEW.cmake" - + if os.path.isfile("Makefile"): + exports = "*" + else: + exports = os.sep.join([".", "..", "..", "*"]) + def system_requirements(self): if os_info.is_linux: if os_info.with_apt: installer = SystemPackageTool() + installer.install("build-essential") + installer.install("libxmu-dev") + installer.install("libxi-dev") + installer.install("libgl-dev") + installer.install("libosmesa-dev") installer.install("libglu1-mesa-dev") elif os_info.with_yum: installer = SystemPackageTool() + installer.install("libXmu-devel") + installer.install("libXi-devel") + installer.install("libGL-devel") installer.install("mesa-libGLU-devel") else: self.output.warn("Could not determine Linux package manager, skipping system requirements installation.") @@ -30,35 +41,31 @@ class GlewConan(ConanFile): def configure(self): del self.settings.compiler.libcxx - def source(self): - zip_name = "%s.tgz" % self.ZIP_FOLDER_NAME - download("https://sourceforge.net/projects/glew/files/glew/%s/%s/download" % (self.version, zip_name), zip_name) - unzip(zip_name) - os.unlink(zip_name) - def build(self): if self.settings.compiler == "Visual Studio": - env = VisualStudioBuildEnvironment(self) - with tools.environment_append(env.vars): - version = min(12, int(self.settings.compiler.version.value)) - version = 10 if version == 11 else version - cd_build = "cd %s\\%s\\build\\vc%s" % (self.conanfile_directory, self.ZIP_FOLDER_NAME, version) - build_command = build_sln_command(self.settings, "glew.sln") - vcvars = vcvars_command(self.settings) - self.run("%s && %s && %s" % (vcvars, cd_build, build_command.replace("x86", "Win32"))) + raise ConanException("Windows builds do not work yet.") + # env = VisualStudioBuildEnvironment(self) + # with tools.environment_append(env.vars): + # version = min(12, int(self.settings.compiler.version.value)) + # version = 10 if version == 11 else version + # cd_build = "cd %s\\%s\\build\\vc%s" % (self.conanfile_directory, self.ZIP_FOLDER_NAME, version) + # build_command = build_sln_command(self.settings, "glew.sln") + # vcvars = vcvars_command(self.settings) + # self.run("%s && %s && %s" % (vcvars, cd_build, build_command.replace("x86", "Win32"))) else: if self.settings.os == "Windows": - replace_in_file("%s/build/cmake/CMakeLists.txt" % self.ZIP_FOLDER_NAME, \ + replace_in_file("%s/build/cmake/CMakeLists.txt" % self.conanfile_directory, \ "if(WIN32 AND (NOT MSVC_VERSION LESS 1600)", \ "if(WIN32 AND MSVC AND (NOT MSVC_VERSION LESS 1600)") + self.run("make extensions") cmake = CMake(self) - cmake.configure(source_dir="%s/build/cmake" % self.ZIP_FOLDER_NAME, defs={"BUILD_UTILS": "OFF"}) + cmake.configure(source_dir="%s/build/cmake" % self.conanfile_directory, defs={"BUILD_UTILS": "OFF"}) cmake.build() def package(self): - self.copy("FindGLEW.cmake", ".", ".") - self.copy("include/*", ".", "%s" % (self.ZIP_FOLDER_NAME), keep_path=True) - self.copy("%s/license*" % self.ZIP_FOLDER_NAME, dst="licenses", ignore_case=True, keep_path=False) + self.copy("FindGLEW.cmake", ".", "%s/build/conan" % self.conanfile_directory, keep_path=False) + self.copy("include/*", ".", ".", keep_path=True) + self.copy("license*", src=".", dst="licenses", ignore_case=True, keep_path=False) if self.settings.os == "Windows": if self.settings.compiler == "Visual Studio": diff --git a/build/conan/test_package/conanfile.py b/build/conan/test_package/conanfile.py index c452d51..18065b9 100644 --- a/build/conan/test_package/conanfile.py +++ b/build/conan/test_package/conanfile.py @@ -2,11 +2,11 @@ from conans import ConanFile, CMake import os channel = os.getenv("CONAN_CHANNEL", "testing") -username = os.getenv("CONAN_USERNAME", "dimi309") +username = os.getenv("CONAN_USERNAME", "nigels-com") class TestGlew(ConanFile): settings = "os", "compiler", "build_type", "arch" - requires = "glew/2.0.0@%s/%s" % (username, channel) + requires = "glew/master@%s/%s" % (username, channel) generators = "cmake" def build(self): From b7fbaec9b33182b584df1cf545671862e618375c Mon Sep 17 00:00:00 2001 From: dimitri Date: Tue, 27 Jun 2017 05:36:02 +0200 Subject: [PATCH 03/10] Support for building released versions added. --- .travis.yml | 7 ++-- build/conan/conanfile.py | 75 +++++++++++++++++++++++++--------------- 2 files changed, 52 insertions(+), 30 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0582390..fe56521 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,8 +4,6 @@ env: - CONAN_USERNAME="nigels-com" - CONAN_REFERENCE="glew/master" - CONAN_CHANNEL="testing" - - CONAN_REMOTES="https://api.bintray.com/conan/dimi309/conan-packages" - - CONAN_UPLOAD="https://api.bintray.com/conan/dimi309/conan-packages" linux: &linux os: linux @@ -44,7 +42,12 @@ install: - chmod +x ./build/conan/.travis/install.sh - ./build/conan/.travis/install.sh script: + # Building master - cp -rf ./build/conan/* . - cp -rf ./build/conan/.travis . - chmod +x .travis/run.sh - .travis/run.sh + + # Building released version + #- chmod +x ./build/conan/.travis/run.sh + #- cd ./build/conan && .travis/run.sh diff --git a/build/conan/conanfile.py b/build/conan/conanfile.py index 9b20477..70c70be 100644 --- a/build/conan/conanfile.py +++ b/build/conan/conanfile.py @@ -1,12 +1,13 @@ import os from conans import ConanFile, CMake from conans.tools import os_info, SystemPackageTool, ConanException -# from conans import tools, VisualStudioBuildEnvironment -from conans.tools import build_sln_command, vcvars_command, replace_in_file +from conans import tools, VisualStudioBuildEnvironment +from conans.tools import build_sln_command, vcvars_command, replace_in_file, download, unzip class GlewConan(ConanFile): name = "glew" version = "master" + source_directory = "%s-%s" % (name, version) if version != "master" else "." description = "The GLEW library" generators = "cmake", "txt" settings = "os", "arch", "build_type", "compiler" @@ -14,26 +15,31 @@ class GlewConan(ConanFile): default_options = "shared=False" url="http://github.com/nigels-com/glew" license="https://github.com/nigels-com/glew#copyright-and-licensing" - if os.path.isfile("Makefile"): - exports = "*" + if version == "master": + if os.path.isfile("Makefile"): + exports = "*" + else: + exports = os.sep.join([".", "..", "..", "*"]) else: - exports = os.sep.join([".", "..", "..", "*"]) + exports = "FindGLEW.cmake" def system_requirements(self): if os_info.is_linux: if os_info.with_apt: installer = SystemPackageTool() - installer.install("build-essential") - installer.install("libxmu-dev") - installer.install("libxi-dev") - installer.install("libgl-dev") - installer.install("libosmesa-dev") + if self.version == "master": + installer.install("build-essential") + installer.install("libxmu-dev") + installer.install("libxi-dev") + installer.install("libgl-dev") + installer.install("libosmesa-dev") installer.install("libglu1-mesa-dev") elif os_info.with_yum: installer = SystemPackageTool() - installer.install("libXmu-devel") - installer.install("libXi-devel") - installer.install("libGL-devel") + if self.version == "master": + installer.install("libXmu-devel") + installer.install("libXi-devel") + installer.install("libGL-devel") installer.install("mesa-libGLU-devel") else: self.output.warn("Could not determine Linux package manager, skipping system requirements installation.") @@ -41,31 +47,44 @@ class GlewConan(ConanFile): def configure(self): del self.settings.compiler.libcxx + def source(self): + if self.version != "master": + zip_name = "%s.tgz" % self.source_directory + download("https://sourceforge.net/projects/glew/files/glew/%s/%s/download" % (self.version, zip_name), zip_name) + unzip(zip_name) + os.unlink(zip_name) + def build(self): + if self.settings.os == "Windows" and self.version == "master": + raise ConanException("Trunk builds are not supported on Windows (cannot build directly from master git repository).") + if self.settings.compiler == "Visual Studio": - raise ConanException("Windows builds do not work yet.") - # env = VisualStudioBuildEnvironment(self) - # with tools.environment_append(env.vars): - # version = min(12, int(self.settings.compiler.version.value)) - # version = 10 if version == 11 else version - # cd_build = "cd %s\\%s\\build\\vc%s" % (self.conanfile_directory, self.ZIP_FOLDER_NAME, version) - # build_command = build_sln_command(self.settings, "glew.sln") - # vcvars = vcvars_command(self.settings) - # self.run("%s && %s && %s" % (vcvars, cd_build, build_command.replace("x86", "Win32"))) + env = VisualStudioBuildEnvironment(self) + with tools.environment_append(env.vars): + version = min(12, int(self.settings.compiler.version.value)) + version = 10 if version == 11 else version + cd_build = "cd %s\\%s\\build\\vc%s" % (self.conanfile_directory, self.source_directory, version) + build_command = build_sln_command(self.settings, "glew.sln") + vcvars = vcvars_command(self.settings) + self.run("%s && %s && %s" % (vcvars, cd_build, build_command.replace("x86", "Win32"))) else: if self.settings.os == "Windows": - replace_in_file("%s/build/cmake/CMakeLists.txt" % self.conanfile_directory, \ + replace_in_file("%s/build/cmake/CMakeLists.txt" % self.source_directory, \ "if(WIN32 AND (NOT MSVC_VERSION LESS 1600)", \ "if(WIN32 AND MSVC AND (NOT MSVC_VERSION LESS 1600)") - self.run("make extensions") + + if self.version == "master": + self.run("make extensions") + cmake = CMake(self) - cmake.configure(source_dir="%s/build/cmake" % self.conanfile_directory, defs={"BUILD_UTILS": "OFF"}) + cmake.configure(source_dir="%s/build/cmake" % self.source_directory, defs={"BUILD_UTILS": "OFF"}) cmake.build() def package(self): - self.copy("FindGLEW.cmake", ".", "%s/build/conan" % self.conanfile_directory, keep_path=False) - self.copy("include/*", ".", ".", keep_path=True) - self.copy("license*", src=".", dst="licenses", ignore_case=True, keep_path=False) + find_glew_dir = "%s/build/conan" % self.conanfile_directory if self.version == "master" else "." + self.copy("FindGLEW.cmake", ".", find_glew_dir, keep_path=False) + self.copy("include/*", ".", "%s" % self.source_directory, keep_path=True) + self.copy("%s/license*" % self.source_directory, dst="licenses", ignore_case=True, keep_path=False) if self.settings.os == "Windows": if self.settings.compiler == "Visual Studio": From 2a5a242624f7a560ad7539142a4ea00ee9e5c6e6 Mon Sep 17 00:00:00 2001 From: dimitri Date: Tue, 27 Jun 2017 06:04:02 +0200 Subject: [PATCH 04/10] Back to original .travis.yml. Keeping .travis.yml.conan. --- .travis.yml | 78 ++++++++++++++++------------------------------- .travis.yml.conan | 53 ++++++++++++++++++++++++++++++++ .travis.yml.main | 29 ------------------ 3 files changed, 80 insertions(+), 80 deletions(-) create mode 100644 .travis.yml.conan delete mode 100644 .travis.yml.main diff --git a/.travis.yml b/.travis.yml index fe56521..021066d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,53 +1,29 @@ - -env: - global: - - CONAN_USERNAME="nigels-com" - - CONAN_REFERENCE="glew/master" - - CONAN_CHANNEL="testing" - -linux: &linux - os: linux - sudo: required - language: python - python: "2.7" - services: - - docker -osx: &osx - os: osx - language: generic -matrix: - include: - - - <<: *linux - env: CONAN_GCC_VERSIONS=4.9 CONAN_DOCKER_IMAGE=lasote/conangcc49 - - <<: *linux - env: CONAN_GCC_VERSIONS=5.4 CONAN_DOCKER_IMAGE=lasote/conangcc54 - - <<: *linux - env: CONAN_GCC_VERSIONS=6.3 CONAN_DOCKER_IMAGE=lasote/conangcc63 - - <<: *linux - env: CONAN_CLANG_VERSIONS=3.9 CONAN_DOCKER_IMAGE=lasote/conanclang39 - - <<: *linux - env: CONAN_CLANG_VERSIONS=4.0 CONAN_DOCKER_IMAGE=lasote/conanclang40 - - <<: *osx - osx_image: xcode7.3 - env: CONAN_APPLE_CLANG_VERSIONS=7.3 - - <<: *osx - osx_image: xcode8.2 - env: CONAN_APPLE_CLANG_VERSIONS=8.0 - - <<: *osx - osx_image: xcode8.3 - env: CONAN_APPLE_CLANG_VERSIONS=8.1 - +language: cpp +sudo: false install: - - chmod +x ./build/conan/.travis/install.sh - - ./build/conan/.travis/install.sh script: - # Building master - - cp -rf ./build/conan/* . - - cp -rf ./build/conan/.travis . - - chmod +x .travis/run.sh - - .travis/run.sh - - # Building released version - #- chmod +x ./build/conan/.travis/run.sh - #- cd ./build/conan && .travis/run.sh +- make -C auto clobber +- make extensions +- make dist-src +- make clean; SYSTEM=linux make +- make clean; SYSTEM=linux-osmesa make +- make clean; SYSTEM=linux-egl make +- make clean; SYSTEM=linux-clang make +- make clean; SYSTEM=linux-clang-egl make +- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' . ; make; popd +- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' -DGLEW_OSMESA=1 . ; make; popd +- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' -DGLEW_EGL=1 . ; make; popd +addons: + apt: + packages: + - git + - cmake + - dos2unix + - libosmesa6-dev + - libegl1-mesa-dev + artifacts: + bucket: glew + s3_region: "us-east-1" + paths: + - $(ls *.zip *.tgz | tr "\n" ":") + - $(find doc -type f | tr "\n" ":") diff --git a/.travis.yml.conan b/.travis.yml.conan new file mode 100644 index 0000000..fe56521 --- /dev/null +++ b/.travis.yml.conan @@ -0,0 +1,53 @@ + +env: + global: + - CONAN_USERNAME="nigels-com" + - CONAN_REFERENCE="glew/master" + - CONAN_CHANNEL="testing" + +linux: &linux + os: linux + sudo: required + language: python + python: "2.7" + services: + - docker +osx: &osx + os: osx + language: generic +matrix: + include: + + - <<: *linux + env: CONAN_GCC_VERSIONS=4.9 CONAN_DOCKER_IMAGE=lasote/conangcc49 + - <<: *linux + env: CONAN_GCC_VERSIONS=5.4 CONAN_DOCKER_IMAGE=lasote/conangcc54 + - <<: *linux + env: CONAN_GCC_VERSIONS=6.3 CONAN_DOCKER_IMAGE=lasote/conangcc63 + - <<: *linux + env: CONAN_CLANG_VERSIONS=3.9 CONAN_DOCKER_IMAGE=lasote/conanclang39 + - <<: *linux + env: CONAN_CLANG_VERSIONS=4.0 CONAN_DOCKER_IMAGE=lasote/conanclang40 + - <<: *osx + osx_image: xcode7.3 + env: CONAN_APPLE_CLANG_VERSIONS=7.3 + - <<: *osx + osx_image: xcode8.2 + env: CONAN_APPLE_CLANG_VERSIONS=8.0 + - <<: *osx + osx_image: xcode8.3 + env: CONAN_APPLE_CLANG_VERSIONS=8.1 + +install: + - chmod +x ./build/conan/.travis/install.sh + - ./build/conan/.travis/install.sh +script: + # Building master + - cp -rf ./build/conan/* . + - cp -rf ./build/conan/.travis . + - chmod +x .travis/run.sh + - .travis/run.sh + + # Building released version + #- chmod +x ./build/conan/.travis/run.sh + #- cd ./build/conan && .travis/run.sh diff --git a/.travis.yml.main b/.travis.yml.main deleted file mode 100644 index 021066d..0000000 --- a/.travis.yml.main +++ /dev/null @@ -1,29 +0,0 @@ -language: cpp -sudo: false -install: -script: -- make -C auto clobber -- make extensions -- make dist-src -- make clean; SYSTEM=linux make -- make clean; SYSTEM=linux-osmesa make -- make clean; SYSTEM=linux-egl make -- make clean; SYSTEM=linux-clang make -- make clean; SYSTEM=linux-clang-egl make -- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' . ; make; popd -- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' -DGLEW_OSMESA=1 . ; make; popd -- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' -DGLEW_EGL=1 . ; make; popd -addons: - apt: - packages: - - git - - cmake - - dos2unix - - libosmesa6-dev - - libegl1-mesa-dev - artifacts: - bucket: glew - s3_region: "us-east-1" - paths: - - $(ls *.zip *.tgz | tr "\n" ":") - - $(find doc -type f | tr "\n" ":") From fd281347f4e85af9dc743e0e8e61b9a506df69dc Mon Sep 17 00:00:00 2001 From: dimitri Date: Fri, 30 Jun 2017 07:23:23 +0200 Subject: [PATCH 05/10] Copying .pdb files for Windows debug static builds. --- build/conan/conanfile.py | 2 +- build/conan/test_package/conanfile.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/build/conan/conanfile.py b/build/conan/conanfile.py index 70c70be..d05622c 100644 --- a/build/conan/conanfile.py +++ b/build/conan/conanfile.py @@ -88,11 +88,11 @@ class GlewConan(ConanFile): if self.settings.os == "Windows": if self.settings.compiler == "Visual Studio": + self.copy(pattern="*.pdb", dst="bin", keep_path=False) if self.options.shared: self.copy(pattern="*32.lib", dst="lib", keep_path=False) self.copy(pattern="*32d.lib", dst="lib", keep_path=False) self.copy(pattern="*.dll", dst="bin", keep_path=False) - self.copy(pattern="*.pdb", dst="bin", keep_path=False) else: self.copy(pattern="*32s.lib", dst="lib", keep_path=False) self.copy(pattern="*32sd.lib", dst="lib", keep_path=False) diff --git a/build/conan/test_package/conanfile.py b/build/conan/test_package/conanfile.py index 18065b9..df5c855 100644 --- a/build/conan/test_package/conanfile.py +++ b/build/conan/test_package/conanfile.py @@ -20,5 +20,6 @@ class TestGlew(ConanFile): def imports(self): if self.settings.os == "Windows": self.copy(pattern="*.dll", dst="bin", src="bin") + self.copy(pattern="*.pdb", dst="bin", src="bin") if self.settings.os == "Macos": self.copy(pattern="*.dylib", dst="bin", src="lib") From fc5659148d1f0a2b4fbb43c4b6b4d6ceac3723f9 Mon Sep 17 00:00:00 2001 From: dimitri Date: Fri, 21 Jul 2017 17:40:11 +0300 Subject: [PATCH 06/10] Correction for conan mingw debug builds. --- build/conan/conanfile.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/conan/conanfile.py b/build/conan/conanfile.py index d05622c..b9976ae 100644 --- a/build/conan/conanfile.py +++ b/build/conan/conanfile.py @@ -99,9 +99,11 @@ class GlewConan(ConanFile): else: if self.options.shared: self.copy(pattern="*32.dll.a", dst="lib", keep_path=False) + self.copy(pattern="*32d.dll.a", dst="lib", keep_path=False) self.copy(pattern="*.dll", dst="bin", keep_path=False) else: self.copy(pattern="*32.a", dst="lib", keep_path=False) + self.copy(pattern="*32d.a", dst="lib", keep_path=False) elif self.settings.os == "Macos": if self.options.shared: self.copy(pattern="*.dylib", dst="lib", keep_path=False) From 58b23c29a7cc1e09043ddedbed26f9379241115f Mon Sep 17 00:00:00 2001 From: dimitri Date: Mon, 24 Jul 2017 23:01:06 +0200 Subject: [PATCH 07/10] Using exports_sources. --- build/conan/conanfile.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/conan/conanfile.py b/build/conan/conanfile.py index b9976ae..27572df 100644 --- a/build/conan/conanfile.py +++ b/build/conan/conanfile.py @@ -17,9 +17,9 @@ class GlewConan(ConanFile): license="https://github.com/nigels-com/glew#copyright-and-licensing" if version == "master": if os.path.isfile("Makefile"): - exports = "*" + exports_sources = "*" else: - exports = os.sep.join([".", "..", "..", "*"]) + exports_sources = os.sep.join(["..", "..", "*"]) else: exports = "FindGLEW.cmake" From b194494aefbee1b8b8811b8f5ada5310fd564e58 Mon Sep 17 00:00:00 2001 From: dimitri Date: Tue, 25 Jul 2017 05:50:18 +0200 Subject: [PATCH 08/10] No version and no username in test_package/conanfile.py --- build/conan/test_package/conanfile.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/build/conan/test_package/conanfile.py b/build/conan/test_package/conanfile.py index df5c855..aa9e8c1 100644 --- a/build/conan/test_package/conanfile.py +++ b/build/conan/test_package/conanfile.py @@ -1,12 +1,8 @@ from conans import ConanFile, CMake import os -channel = os.getenv("CONAN_CHANNEL", "testing") -username = os.getenv("CONAN_USERNAME", "nigels-com") - class TestGlew(ConanFile): settings = "os", "compiler", "build_type", "arch" - requires = "glew/master@%s/%s" % (username, channel) generators = "cmake" def build(self): From f8c6f9bffde733df9cb55a13c08c5e205f8e40f6 Mon Sep 17 00:00:00 2001 From: dimitri Date: Wed, 26 Jul 2017 05:23:03 +0200 Subject: [PATCH 09/10] Using standard args in FindGLEW. --- build/conan/FindGLEW.cmake | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/build/conan/FindGLEW.cmake b/build/conan/FindGLEW.cmake index 25f7ba7..4c10b30 100644 --- a/build/conan/FindGLEW.cmake +++ b/build/conan/FindGLEW.cmake @@ -1,16 +1,18 @@ -find_path(GLEW_INCLUDE_DIR NAMES GL PATHS include) -find_library(GLEW_LIBRARY NAMES GLEW GLEWd glew32 glew32s glew32d glew32sd PATHS lib ) +find_path( + GLEW_INCLUDE_DIR + NAMES + GL + PATHS + include) -MESSAGE("** GLEW FOUND BY CONAN") -SET(GLEW_FOUND TRUE) -MESSAGE("** FOUND GLEW: ${GLEW_LIBRARY}") -MESSAGE("** FOUND GLEW INCLUDE: ${GLEW_INCLUDE_DIR}") +find_library( + GLEW_LIBRARY + NAMES + GLEW GLEWd glew32 glew32s glew32d glew32sd + PATHS + lib) -set(GLEW_INCLUDE_DIRS ${GLEW_INCLUDE_DIR}) -set(GLEW_LIBRARIES ${GLEW_LIBRARY}) +include(FindPackageHandleStandardArgs) -mark_as_advanced(GLEW_LIBRARY GLEW_INCLUDE_DIR) +find_package_handle_standard_args(GLEW REQUIRED_VARS GLEW_LIBRARY GLEW_INCLUDE_DIR) -set(GLEW_MAJOR_VERSION "2") -set(GLEW_MINOR_VERSION "0") -set(GLEW_PATCH_VERSION "0") From 1b1371ddcb0befd9ddace093218432dd38ea639d Mon Sep 17 00:00:00 2001 From: dimitri Date: Wed, 26 Jul 2017 05:35:34 +0200 Subject: [PATCH 10/10] Conan package test cmakelists cleanup. --- build/conan/test_package/CMakeLists.txt | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/build/conan/test_package/CMakeLists.txt b/build/conan/test_package/CMakeLists.txt index 358ad28..351a778 100644 --- a/build/conan/test_package/CMakeLists.txt +++ b/build/conan/test_package/CMakeLists.txt @@ -3,11 +3,7 @@ cmake_minimum_required(VERSION 3.0.0) include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) conan_basic_setup() -set(CMAKE_C_FLAGS "${CONAN_C_FLAGS}") -set(CMAKE_CXX_FLAGS "${CONAN_CXX_FLAGS}") -set(CMAKE_SHARED_LINKER_FLAGS "${CONAN_SHARED_LINKER_FLAGS}") - add_executable(testGlew main.c) -TARGET_COMPILE_DEFINITIONS(testGlew PUBLIC "${CONAN_DEFINES}") -TARGET_LINK_LIBRARIES(testGlew PUBLIC "${CONAN_LIBS}") -SET_TARGET_PROPERTIES(testGlew PROPERTIES LINK_FLAGS "${CONAN_EXE_LINKER_FLAGS}") +target_compile_definitions(testGlew PUBLIC "${CONAN_DEFINES}") +target_link_libraries(testGlew PUBLIC "${CONAN_LIBS}") +set_target_properties(testGlew PROPERTIES LINK_FLAGS "${CONAN_EXE_LINKER_FLAGS}")