Skip to content
This repository was archived by the owner on Nov 20, 2020. It is now read-only.
This repository was archived by the owner on Nov 20, 2020. It is now read-only.

luajit build failing on windows 7 32 bit tdm... though working without luadist #211

Description

@joshua-scholar

I'm new to luadist so I don't know how to do basic things...
I can build luajit just fine from the source but when I do it from luadist install libjit I get an error.

C:\luadist_bootstrap_install\bin>luadist C:\my_lua install luajit
Downloading repository information...
Finding out available versions of luajit...
Getting luajit-2.0.3 (source)...
Building luajit-2.0.3...
Error building with CMake in directory 'C:\my_lua\tmp\luajit-2.0.3-CMake-build'

I made the guess that I could get a more useful error message by going to the build directory and running make thus:

C:\luadist_bootstrap_install\bin>cd C:\my_lua\tmp\luajit-2.0.3-CMake-build

C:\my_lua\tmp\luajit-2.0.3-CMake-build>mingw32-make
Built target minilua
Built target buildvm
Linking C shared library liblua.dll
CMakeFiles\liblua.dir/objects.a(lj_clib.c.obj):lj_clib.c:(.text+0xc9): undefined reference to GetM duleHandleExA' CMakeFiles\liblua.dir/objects.a(lib_package_rel.c.obj):lib_package_rel.c:(.text+0xb75): undefined r ference toGetModuleHandleExA'
collect2.exe: error: ld returned 1 exit status
CMakeFiles\liblua.dir\build.make:1724: recipe for target 'liblua.dll' failed
mingw32-make[2]: *** [liblua.dll] Error 1
CMakeFiles\Makefile2:94: recipe for target 'CMakeFiles/liblua.dir/all' failed
mingw32-make[1]: *** [CMakeFiles/liblua.dir/all] Error 2
Makefile:136: recipe for target 'all' failed
mingw32-make: *** [all] Error 2

Doing a diff between the source files directly from the luajit site that built properly and the ones luadist pulled doesn't find a difference, so I guess there is one it has to be in build flags.

I wish I knew enough to do simple things like just substitute my successful build in and tell the luadist to use it.

Activity

  1. changed the title [-]luajit build failing on windows 7 32 bit tdm... though working without libdist[/-] [+]luajit build failing on windows 7 32 bit tdm... though working without luadist[/+] on Jan 16, 2015
  2. joshua-scholar commented on Jan 16, 2015

    @joshua-scholar
    Author

    I don't know much about cmake... It occurs to me that another possible difference other than build flags could be if cmake chose to use one of my microsoft compilers rather than use the mingw one that's in the path.

  3. joshua-scholar commented on Jan 17, 2015

    @joshua-scholar
    Author

    I've found a bit more information.
    Since GetModuleHandleEx doesn't exist in windows prior to WindowsXP mingw's winbase.h has been changed to not define it if _WIN32_WINNT < 0x0502
    If I put the following lines in winbase I get an error:
    #if (_WIN32_WINNT<0x0502)
    #error windows version _WIN32_WINNT is less than 0x0502
    #endif

    Scanning dependencies of target liblua
    [ 17%] Building C object CMakeFiles/liblua.dir/src/lj_gc.c.obj
    In file included from C:/TDM-GCC-32/include/windows.h:50:0,
    from C:\my_lua\tmp\luajit-2.0.3\src\lj_dispatch.h:119,
    from C:\my_lua\tmp\luajit-2.0.3\src\lj_trace.h:13,
    from C:\my_lua\tmp\luajit-2.0.3\src\lj_gc.c:26:
    C:/TDM-GCC-32/include/winbase.h:6:2: error: #error windows version _WIN32_WINNT is less than 0x0502
    #error windows version _WIN32_WINNT is less than 0x0502
    ^
    CMakeFiles\liblua.dir\build.make:129: recipe for target 'CMakeFiles/liblua.dir/src/lj_gc.c.obj' fail
    ed
    mingw32-make[2]: *** [CMakeFiles/liblua.dir/src/lj_gc.c.obj] Error 1
    CMakeFiles\Makefile2:94: recipe for target 'CMakeFiles/liblua.dir/all' failed
    mingw32-make[1]: *** [CMakeFiles/liblua.dir/all] Error 2
    Makefile:136: recipe for target 'all' failed
    mingw32-make: *** [all] Error 2

  4. joshua-scholar commented on Jan 17, 2015

    @joshua-scholar
    Author

    The mingw32-make succeeds if I make the following changes (and I doubt this is the right way to patch so I'd appreciate some help).

    Change flags.make in two directories
    C:\my_lua\tmp\luajit-2.0.3-CMake-build\CMakeFiles\wluajit.dir
    and
    C:\my_lua\tmp\luajit-2.0.3-CMake-build\CMakeFiles\liblua.dir

    so that C_FLAGS now includes -D_WIN32_WINNT=0x0502

  5. joshua-scholar commented on Jan 17, 2015

    @joshua-scholar
    Author

    Sigh... I'm not sure how I did it, I got it working once.
    I ran the cmake-gui from the command line a few times, but didn't change anything.. Then ran it from the start menu and it had a list of settings for the current project.
    I change all of the C_FLAGS entries to have -D_WIN32_WINNT=0x0502
    Then I generated
    Then I ran "luadist /my_lua install luajit" and it worked
    But what I find confusing now, is that if I run the cmake gui again, it comes up blank.

  6. joshua-scholar commented on Jan 17, 2015

    @joshua-scholar
    Author

    Note it was uhm only the C compiler entries I changed not the assembler ones, and they only came up after I selected "advanced"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions