authorgravatar for michael.dusan@gmail.comMichael Dusan <michael.dusan@gmail.com> 2020-01-17 13:02:44-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-17 14:24:54-05:00
logd53e8a5751c3d3a65db775598cc1db88c4d92ba9
tree1e14fcb22dc0957dda325fbc058989609c48b5a0
parent9348609e6a409d688ae4899b6e3b8347e1c1353e

Revert "cmake: support `make` and `make install`"

This reverts commit cd062b08d01cf2c92b05ef3e96b2ff3715f29fd5.

2 files changed, 27 insertions(+), 43 deletions(-)

CMakeLists.txt+12-23
...@@ -45,6 +45,7 @@ message("Configuring zig version ${ZIG_VERSION}")...@@ -45,6 +45,7 @@ message("Configuring zig version ${ZIG_VERSION}")
4545
46set(ZIG_STATIC off CACHE BOOL "Attempt to build a static zig executable (not compatible with glibc)")46set(ZIG_STATIC off CACHE BOOL "Attempt to build a static zig executable (not compatible with glibc)")
47set(ZIG_STATIC_LLVM off CACHE BOOL "Prefer linking against static LLVM libraries")47set(ZIG_STATIC_LLVM off CACHE BOOL "Prefer linking against static LLVM libraries")
48set(ZIG_SKIP_INSTALL_LIB_FILES off CACHE BOOL "Disable copying lib/ files to install prefix")
48set(ZIG_ENABLE_MEM_PROFILE off CACHE BOOL "Activate memory usage instrumentation")49set(ZIG_ENABLE_MEM_PROFILE off CACHE BOOL "Activate memory usage instrumentation")
4950
50if(ZIG_STATIC)51if(ZIG_STATIC)
...@@ -607,26 +608,19 @@ if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")...@@ -607,26 +608,19 @@ if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
607else()608else()
608 set(LIBUSERLAND_RELEASE_MODE "true")609 set(LIBUSERLAND_RELEASE_MODE "true")
609endif()610endif()
610611if(ZIG_SKIP_INSTALL_LIB_FILES)
611set(BUILD_LIBUSERLAND_COMMAND zig0 build612 set(ZIG_BUILD_INSTALL_STEP "")
612 --override-lib-dir "${CMAKE_SOURCE_DIR}/lib"613else()
613 "-Doutput-dir=${CMAKE_BINARY_DIR}"614 set(ZIG_BUILD_INSTALL_STEP "install")
614 "-Drelease=${LIBUSERLAND_RELEASE_MODE}"
615 "-Dlib-files-only"
616 --prefix "${CMAKE_INSTALL_PREFIX}"
617 libuserland
618)
619
620# When using Visual Studio build system generator we default to libuserland install.
621if(MSVC)
622 set(ZIG_SKIP_INSTALL_LIB_FILES off CACHE BOOL "Disable copying lib/ files to install prefix")
623 if(NOT ZIG_SKIP_INSTALL_LIB_FILES)
624 set(BUILD_LIBUSERLAND_COMMAND ${BUILD_LIBUSERLAND_COMMAND} install)
625 endif()
626endif()615endif()
627
628add_custom_target(zig_build_libuserland ALL616add_custom_target(zig_build_libuserland ALL
629 COMMAND ${BUILD_LIBUSERLAND_COMMAND}617 COMMAND zig0 build
618 --override-lib-dir "${CMAKE_SOURCE_DIR}/lib"
619 libuserland ${ZIG_BUILD_INSTALL_STEP}
620 "-Doutput-dir=${CMAKE_BINARY_DIR}"
621 "-Drelease=${LIBUSERLAND_RELEASE_MODE}"
622 "-Dlib-files-only"
623 --prefix "${CMAKE_INSTALL_PREFIX}"
630 DEPENDS zig0624 DEPENDS zig0
631 BYPRODUCTS "${LIBUSERLAND}"625 BYPRODUCTS "${LIBUSERLAND}"
632 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"626 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
...@@ -644,9 +638,4 @@ elseif(MINGW)...@@ -644,9 +638,4 @@ elseif(MINGW)
644 target_link_libraries(zig ntdll)638 target_link_libraries(zig ntdll)
645endif()639endif()
646add_dependencies(zig zig_build_libuserland)640add_dependencies(zig zig_build_libuserland)
647
648install(TARGETS zig DESTINATION bin)641install(TARGETS zig DESTINATION bin)
649
650# CODE has no effect with Visual Studio build system generator.
651install(CODE "message(\"-- Installing: ${CMAKE_INSTALL_PREFIX}/lib\")")
652install(CODE "execute_process(COMMAND ${BUILD_LIBUSERLAND_COMMAND} install)")
CONTRIBUTING.md+15-20
...@@ -51,28 +51,23 @@ knowledge of Zig internals.**...@@ -51,28 +51,23 @@ knowledge of Zig internals.**
5151
52### Editing Source Code52### Editing Source Code
5353
54First, build the Stage 1 compiler as described in [Building from Source](README.md#Building-from-Source).54First, build the Stage 1 compiler as described in [the Building section](#building).
5555
56Zig locates lib files relative to executable path by searching up the56One modification you may want to make is adding `-DZIG_SKIP_INSTALL_LIB_FILES=ON`
57filesystem tree for a sub-path of `lib/zig/std/std.zig` or `lib/std/std.zig`.57to the cmake line. If you use the build directory as a working directory to run
58Typically the former is an install and the latter a git working tree which58tests with, zig will find the lib files in the source directory, and they will not
59contains the build directory.59be "installed" every time you run `make`. This will allow you to make modifications
6060directly to the standard library, for example, and have them effective immediately.
61During development it is not necessary to perform installs when modifying61Note that if you already ran `make` or `make install` with the default cmake
62stage1 or userland sources and in fact it is faster and simpler to run,62settings, there will already be a `lib/` directory in your build directory. When
63test and debug from a git working tree.63executed from the build directory, zig will find this instead of the source lib/
6464directory. Remove the unwanted directory so that the desired one can be found.
65- `make` is typically sufficient to build zig during development iterations.
66- `make install` performs a build __and__ install.
67- `msbuild -p:Configuration=Release INSTALL.vcxproj` on Windows performs a
68build and install. To avoid install, pass cmake option `-DZIG_SKIP_INSTALL_LIB_FILES=ON`.
6965
70To test changes, do the following from the build directory:66To test changes, do the following from the build directory:
7167
721. Run `make` (on POSIX) or681. Run `make install` (on POSIX) or
73 `msbuild -p:Configuration=Release INSTALL.vcxproj` (on Windows).69 `msbuild -p:Configuration=Release INSTALL.vcxproj` (on Windows).
742. `$BUILD_DIR/zig build test` (on POSIX) or702. `bin/zig build test` (on POSIX) or `bin\zig.exe build test` (on Windows).
75 `$BUILD_DIR/Release\zig.exe build test` (on Windows).
7671
77That runs the whole test suite, which does a lot of extra testing that you72That runs the whole test suite, which does a lot of extra testing that you
78likely won't always need, and can take upwards of 1 hour. This is what the73likely won't always need, and can take upwards of 1 hour. This is what the
...@@ -90,8 +85,8 @@ Another example is choosing a different set of things to test. For example,...@@ -90,8 +85,8 @@ Another example is choosing a different set of things to test. For example,
90not the other ones. Combining this suggestion with the previous one, you could85not the other ones. Combining this suggestion with the previous one, you could
91do this:86do this:
9287
93`$BUILD_DIR/bin/zig build test-std -Dskip-release` (on POSIX) or88`bin/zig build test-std -Dskip-release` (on POSIX) or
94`$BUILD_DIR/Release\zig.exe build test-std -Dskip-release` (on Windows).89`bin\zig.exe build test-std -Dskip-release` (on Windows).
9590
96This will run only the standard library tests, in debug mode only, for all91This will run only the standard library tests, in debug mode only, for all
97targets (it will cross-compile the tests for non-native targets but not run92targets (it will cross-compile the tests for non-native targets but not run