Giter Site home page Giter Site logo

bkaradzic / genie Goto Github PK

View Code? Open in Web Editor NEW
871.0 38.0 166.0 4.56 MB

GENie - Project generator tool

License: Other

Makefile 4.84% Lua 31.85% HTML 15.90% CSS 0.09% C 47.06% C++ 0.01% Shell 0.01% Batchfile 0.01% Roff 0.24%
fastbuild cmake qbs ninja premake visual-studio makefile generator xcode qtcreator

genie's People

Contributors

agentfeyd avatar beevik avatar belegdol avatar billfreist avatar bkaradzic avatar bradhugh avatar codecat avatar dankan1890 avatar dbartolini avatar djlink avatar dschnee avatar fitzymj avatar hugoam avatar jalgelind avatar jeduden avatar kagekirin avatar klowner avatar mikepopoloski avatar mmicko avatar muzza avatar natelong avatar nem0 avatar phsteven avatar rhoot avatar sonnybonds avatar stuartcarnie avatar teddemunnik avatar tengato avatar variousviolets avatar vk2gpu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

genie's Issues

Per configuration custombuildtask

Is possible to use custombuildtask per configuration (Debug / Release)?
I need to assemble some .asm files with MASM.

configuration { "Release" }
    custombuildtask { ... }

configuration { "Debug" }
    custombuildtask { ... }

os.rmdir with Visual Studio .vs folder

Recent versions of Visual Studio create a read-only, hidden folder called ".vs" alongside the solution. My genie.lua script attempts to remove this directory, but it's not having any luck.

if _ACTION == "clean" then
    os.rmdir("../bin")
    os.rmdir("../build/.vs")        -- this doesn't seem to work because the file is write protected
    os.rmdir("../build")            -- this doesn't work because the directory contains .vs folder
end

Is there a way to do this?

Explicit choice of linking debug or release run-time

I'm switching from my prior customized branch of premake to GENie and one feature I had added that is missing here is support for the explicit choice of whether to link against the debug or release run-time libraries. By default, it is implicit to use the release libs only when optimization is on or symbols are off.

The code in question can be found in 'function premake.config.isdebugbuild(cfg)' in config.lua.

I ended up adding new flags: DebugRuntime and ReleaseRuntime. Then I updated said function as follows:

function premake.config.isdebugbuild(cfg)
    -- If any of the specific runtime flags are set
    if cfg.flags.DebugRuntime then
        return true
    end

    if cfg.flags.ReleaseRuntime then
        return false
    end

    -- If any of the optimize flags are set, it's a release a build
    if cfg.flags.Optimize or cfg.flags.OptimizeSize or cfg.flags.OptimizeSpeed then
        return false
    end

    -- If symbols are not defined, it's a release build
    if not cfg.flags.Symbols then
        return false
    end

    return true
end

Does this sound appropriate for GENie as well? Feel free to add the code above or I could do what sounds like a pull request (?) - I literally just installed git for the first time ever so still figuring it out.

Issues targetting other platforms form multiple OSes (Android from Win & OSX, for example)

I've recently been getting Android going in my build scripts using genie. All works fine when doing this on Linux, but tried to get it going on OSX and hit a snag. The code that sets the "-shared" flag for linking differs when running on OSX, looks to be because of this line:

https://github.com/bkaradzic/genie/blob/bf82f24a1f77d20c726853674bd3bfaf6f5334db/src/tools/gcc.lua#L156

There are few places where system checks are done to setup other things such as library extentions (.dll on windows, .so on other). This forced me to work around on my Windows Android build also.

Is there a way to set cfg.system to not be "macosx" when running on OSX, but only when targeting OSX, or will this require me to go into the genie code and add a "Target OS" or similar to the configuration?

links {} does not seem to handle external static libraries properly

First some references:
http://stackoverflow.com/questions/10482997/linking-to-an-external-library-with-premake
One of the premake devs responds that it is a bug and mentions this commit in premake which supposedly fixes the issue:
annulen/premake@c144e9c
I'm not sure how relevant those are to genie, but thought I should mention it right off the bat.

Repro with genie on linux:

  • Clone bx/bgfx
  • Open bgfx/scripts/genie.lua and find the first links section within the exampleProject function. It should look like this:
­­­­­­links {
"bgfx",
"example-common",
­­­­­­­}
  • Make it look like this:
­­­­­­links {
­­­­­­­­­­­­"/tmp/somelib.a",
"bgfx",
­­­­­­"example-common",
­­­­­­­}
  • "touch /tmp/somelib.a", or put an actual static library file there if you want.
  • cd bgfx && make
  • Examine .build/projects/gmake-linux/example-00-helloworld.make and search for "somelib.a"

Actual Result in example-00-helloworld.make:
LIBS += $(LDDEPS) -lrt -lsomelib.a -lX11 -lGLESv2 -lEGL -lbcm_host -lvcos -lvchiq_arm -lpthread

Expected result would be for genie to understand that I'm referring to an external static lib and have something like:
LIBS += $(LDDEPS) -lrt /tmp/somelib.a -lX11 -lGLESv2 -lEGL -lbcm_host -lvcos -lvchiq_arm -lpthread
Or this:
LIBS += $(LDDEPS) -lrt -L/tmp somelib.a -lX11 -lGLESv2 -lEGL -lbcm_host -lvcos -lvchiq_arm -lpthread

It's possible to add /tmp/somelib.a to a linkoptions section instead of using links, but linkoptions are always before all of the "links" in the command line, so you then lose control over the ordering of your libraries, which is sometimes important. For example, you may want /tmp/somelib.a to appear after all of the previously specified "links", and as far as I know that is not possible by using linkoptions. The workaround I used in my project was to switch everything over to using linkoptions -- even for in-project static and dynamic libraries that have no other reason to be specified within linkoptions.

Generate -j flag for Makefiles

We already have a code path for this under Visual Studio: if NoMultiProcessorCompilation isn't set, then under most conditions, MultiProcessorCompilation is enabled.

Would a patch for this functionality be appropriate for GENie? Simply enabling -j while calling the default Makefile output kinda sucks, because the jobs are not per-project, making the output incredibly garbled.

Xcode better bundle resource support

Bundle resources(files) are copied to target .app and they can be read at runtime.

Currently genie handles input files as resources based on file extension:
https://github.com/bkaradzic/genie/blob/master/src/actions/xcode/xcode_common.lua#L20

This means that other filetypes cannot be used runtime.

Second problem is that currently all file is put into the root of the target app, so the app cannot reference a file like this: "meshes/cube.bin" because it will be just "cube.bin".
A solution for this could be the usage of folder references. This references add all file in that directory including subdirectories.

This could be implemented with a new option "resources" that is similar to the current "files" but handles all file as resources instead of the current extension "magic".

Do not expect ldflags to be -L/usr/lib{32,64}

In src/tools/gcc.lua, genie adds -L/usr/lib32 or -L/usr/lib64 to ldflags.

Do not do this. This is not correct. I can have a custom toolchain (cross or not) that keeps its lib files anywhere I want. You should never guess where the toolchain looks for its lib files.

got a project buildable with genie, not sure where to start troubleshooting

errors:

C:\dev\ImWindow\build>build
C:/dev/ImWindow/build/genie.lua:89: attempt to concatenate a nil value (global '_ACTION')
stack traceback:
        C:/dev/ath/ImWindow/build/genie.lua:89: in main chunk
        [C]: in upvalue 'builtin_dofile'
        [string "premake = { }..."]:85: in function 'dofile'
        [string "_WORKING_DIR        = os.getcwd()..."]:41: in function '_premake_main'

where to start looking? is that a bug in genie? or in project configuration file? or my OS configuration?

the project in question is https://github.com/thennequin/ImWindow

Better errors when using syntax incorrectly

Currently if you do something along the lines of:

location { "loc/Path" }

You will end up with an unhelpful error with no line or callstack. Same goes if you were to go:

include { "path/to/inc" }

You will also get an unhelpful error message.

Adding config based token replacement to paths

Any plans on adding the config based token replacement support to paths that the later premake stuff started doing? This allows for things like:

targetdir "path/%{cfg.platform}"

instead of the current:

configuration "x32"
targetdir "path/x32"
configuration "x64"
targetdir "path/x64"

XCode c++11

Making genie work in a c++11 macosx project is failing to compile on xcode unless I manually go in and change the c++ language dialect option to c++11. I tried using linkoptions but it doesn't seem to work. Is there any other way of enabling c++11? I'm using xcode 6.2

What I tried:

    linkoptions {
        "-std=c++11",
    }

Error: Cannot install on MacOSX10.10.5

==== Building genie (release) ====
os_getversion.c
In file included from /usr/include/Availability.h:153:0,
from /usr/include/stdio.h:65,
from ../../src/host/lua-5.3.0/src/lauxlib.h:13,
from ../../src/host/premake.h:9,
from ../../src/host/os_getversion.c:7:
/System/Library/Frameworks/CoreServices.framework/Frameworks/FSEvents.framework/Headers/FSEvents.h:262:38: error: expected ',' or '}' before 'attribute'
kFSEventStreamCreateFlagIgnoreSelf OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_6_0) = 0x00000008,
^
/System/Library/Frameworks/CoreServices.framework/Frameworks/FSEvents.framework/Headers/FSEvents.h:414:38: error: expected ',' or '}' before '__attribute
'
kFSEventStreamEventFlagItemCreated __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_6_0) = 0x00000100,
^
make[2]: *** [obj/Release/src/host/os_getversion.o] Error 1
make[1]: *** [genie] Error 2
make: *** [bin/darwin/genie] Error 2

makefile -j causes prebuild to be run in parallel with build

Not sure if its a bug or the way I did the scripts, but doing a "make -j 2" or higher causes prebuild (possibly prelink too) commands to be run in parallel with building the project and breaks cause its looking for files that are generated after prebuild.

What I'm gona do is do the prebuild in the .lua files with os.execute()

Ninja

Feature request: add support for ninja build backend

GENie Unity Builds

Is there a good way to do Unity builds in GENie besides having to architect a special source file with includes? (This seems to me that this is a good use of GENie to maintain a single source of build information-the genie.lua file).

I'm willing to work on a flag that generates the unity files based on each line of your files {} declaration if you think this is within the scope of GENie. (i.e. files { "src/math/**.cpp, "src/gfx/**.cpp" } would result in src-math-unity.cpp and a src-gfx-unity.cpp files that had all the respective includes).

Support a base directory (basedir) for projects

I would like to be able to specify a "basedir" for my project file, and have the project generation start from that directory when searching for files and establishing groups.

For example, for a source files held in /src/dependencies/dependencyA I could specify a basedir of "/src/dependencies/dependencyA", and only files in that directory would appear in the project. Additionally, these would appear at the root of the project (not under directory filters).

Lua pre/post build steps.

At the moment I have various scripts setup to do some pre/post build steps, or run the pre build code when generating the projects (which isn't my preferred approach).

I was thinking it might be nice if these could actually just be Lua. Not sure on the best way to go about implementing this, but actually being able to have the Lua inline would be quite nice.

Currently in my game scripts I have this:

prebuildcommands {
  "python ../../Psybrus/reflection_parse.py " .. solution().name
}

It would be nice if I could replace it along the lines of:

function ProcessReflection( path )
    -- do the work here
end

prebuildcommands {
  {
    ProcessReflection,  // Function to call.
    solution().name  // First parameter.
  }
}

Any thoughts on this? I imagine what would need to be done is genie is invoked by the makefiles/vsproj on the pre/post build steps and told to run said Lua function. At a slightly more complex level, it would need to potentially pull out the Lua code referenced and generate new Lua files and tell Genie to invoke those instead.

gmake option produces lua error

Using the very basic script mentioned in this issue:
#129

With the command line "genie gmake" produces the following error:

[string "_MAKE = { }..."]:15: invalid use of '%' in replacement string
stack traceback:
[C]: in function 'string.gsub'
[string "_MAKE = { }..."]:15: in field 'esc'
[string "premake.make.cpp = { }..."]:202: in field 'gmake_cpp_config'
[string "premake.make.cpp = { }..."]:11: in local 'callback'
[string "function premake.generate(obj, filename, call..."]:9: in field 'generate'
[string "_MAKE = { }..."]:90: in field 'onproject'
[string "premake.action = { }..."]:23: in field 'call'
[string "_WORKING_DIR = os.getcwd()..."]:67: in function '_premake_main'

My guess is a missing MinGW environment variable resulting in a non-obvious error message, but I've had a quick look through the genie source and can't see exactly what is going on.

prebuildcommands & gmake: Running parallel to compilation.

Anything inside of prebuildcommands appears to be ran parallel to compilation when using gmake and -j. In my own case I'm using the prebuildcommands to generate some source code, normally it's quick enough to not be an issue but I noticed some strange errors recently on occasion.

Is there a way to setup dependencies and outputs for prebuildcommands, or another way to force compilation to be dependent upon prebuildcommands? If not, I can look into implementing this fairly soon (I already had a poke at the generated makefiles to make sure it was feasible).

Generated VS2015 C# projects only contain the AnyCPU target platform

Trying to generate project files with the following lua configuration generates a project with only the AnyCPU platform available. I assumed a .csproj file with the x86 and x64 target platforms would have been generated

project "project"
    uuid "17159639-a14d-42de-ba6a-5d029ead90b6"
    kind "SharedLib"
    language "C#"
    flags("Unsafe")

    configurations { "Debug", "Release" }
    platforms { "x32", "x64" }

    files {
        "../source/project/**.cs",
    }

Correct platforms are generated when changing language to "C++".

Add Xcode iOS deployment target / targeted devices

In Xcode it looks like this:
screen shot 2015-02-01 at 19 35 55

In Xcodeproj:
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
TARGETED_DEVICE_FAMILY = "1,2";

it could be similar to premake.xcode.toolset
for example:
premake.xcode.ios_deployment_target and
premake.xcode.targeted_device_family.

I can add these after discussing the details.

Missing genie.lua for building genie/running scripts

In order to hack on the Lua scripts, it would be useful to be able to run "genie embed" in order to re-generate src/host/scripts.c. Just like good ol' premake. :-)

An alternative solution would be to do it with a Make target using a vanilla Lua interpreter.

Thoughts?

Error linking projects on MacOSX in release

Adding "-Wl, -x" around here:
https://github.com/bkaradzic/genie/blob/master/src/tools/gcc.lua#L147

Causes macOSX to give the error described here:

http://stackoverflow.com/questions/22689492/cant-link-other-projects-in-my-solution-with-premake

ld: internal error: atom not found in symbolIndex(__ZNKSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strEv) for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [../bin/examples_main.cc] Error 1

Removing those flags makes the project to work perfectly.

Visual Studio - Target Platform Version

I don't think that there's a way to change the target platform version in the general settings in visual studio. The project has 8.1 by default and I have to change it to 10.0.10240.0 every time I build. Not a big issue but it would be cool to be able to set it.

Thanks.

File level configuration isn't possible

Any file level configuration that could be done with premake is no longer possible after the change below. For instance, "buildaction" is broken due to this. We also wouldn't be able to implement any new features that use file-level configuration.

"Update bake.lua to remove slow code path."

The genie bake postprocess function was building per-file
configurations very slowly. It relied heavily on numerous
nested pattern-matches but as far as I could tell, it
wasn't doing anything that resulted in a change to a project
or a makefile. This change removes the offending code.

Getting started with emscripten

I'm starting to use GENie and I've got stuck on getting Emscripten working. I've got a simple project working for windows with the following genie.lua file:

solution "MyApplication"
   configurations { "Debug", "Release" }
   -- A project defines one build target
   project "MyApplication"
      kind "ConsoleApp"
      language "C++"
      files { "../source/**.h", "../source/**.cpp" }
      targetdir "bin/%{cfg.buildcfg}"
      configuration "Debug"
         defines { "DEBUG" }
         flags { "Symbols" }
      configuration "Release"
         defines { "NDEBUG" }
         flags { "Optimize" }  

As an aside I found it hard to find anything at all that would help getting started. The above file is from a google search that hit this page http://industriousone.com/sample-script, which is for premake not GENie, and also missing targetdir. But with that addition, great, we're up and running for Visual Studio at least.

Now, for Emscripten. I have Emscripten, MinGW, and vs-tool installed.

I can't find any docs, but there is the odd page with references to GENie, as in the following:
bkaradzic/bgfx#574

When I try that command line:
genie --gcc=asmjs gmake

I get the error "invalid option 'gcc'". Is that "gcc" some intrinsic part of GENie or is it something that the genie.lua file should interpret in order to set some stuff up manually? From the error I'm guessing its the latter, but some documentation would really help.

Request: Support projects depending on libs using cmake

I would love it if someone made it so that you can depend on a cmake project and have a way to set cmake options. This should help with adoption since cmake is pretty common for open source projects.

What I'm currently doing:

local cmake_ops =   " -DPNG_TESTS:BOOL=\"0\" -DPNG_SHARED:BOOL=\"0\""

configuration {"linux", "Debug"}
    includedirs {path.join(BUILD_DIR, "deps/Debug/libpng/include")}
    libdirs {path.join(BUILD_DIR, "deps/Debug/libpng/lib")}
    linkoptions {"-lpng16d", "-lz", "-lm"}
    prebuildcommands{
        "cmake" ..
        " -DCMAKE_INSTALL_PREFIX:PATH=\"" .. path.join(BUILD_DIR, "deps/Debug/libpng") .. "\"" ..  " -DCMAKE_BUILD_TYPE=Debug" ..
        cmake_ops ..
        " -H\"" .. path.join(DEPS_DIR, "libpng") .. "\" -B\"" .. path.join(BUILD_DIR, "deps/Debug/libpng") .. "\" -G \"Unix Makefiles\"",

        "cmake --build \"" .. path.join(BUILD_DIR, "deps/Debug/libpng") ..  "\" --target \"install\" -- -j " .. os.outputof("nproc")
    }

configuration {"linux", "Release"}
    includedirs {path.join(BUILD_DIR, "deps/Release/libpng/include")}
    libdirs {path.join(BUILD_DIR, "deps/Release/libpng/lib")}
    linkoptions {"-lpng16", "-lz", "-lm"}
    prebuildcommands{
        "cmake" ..
        " -DCMAKE_INSTALL_PREFIX:PATH=\"" .. path.join(BUILD_DIR, "deps/Release/libpng") .. "\"" ..  " -DCMAKE_BUILD_TYPE=Release" ..
        cmake_ops ..
        " -H\"" .. path.join(DEPS_DIR, "libpng") .. "\" -B\"" .. path.join(BUILD_DIR, "deps/Release/libpng") .. "\" -G \"Unix Makefiles\"",

        "cmake --build \"" .. path.join(BUILD_DIR, "deps/Release/libpng") ..  "\" --target \"install\" -- -j " .. os.outputof("nproc")
    }

Concurrent builds disabled in VS 2015 C++ projects

It seems that a side effect of adding unique object file names to ClCompile items (change introduced in 8674958) in Visual C++ project files is that concurrent building breaks.

By removing the tags, concurrent building is reenabled for the given item. It seems it can handle building concurrently for all items witout those tags, but the ones with are build sequentially. Not sure if this is a bug in MSVC concurrent building.

Perhaps a solution could be to selectively use object file names to resolve collisions, although this would of course require a bit of logic in this case.

I have tested this on VS 2015 (CTP6 and RC).

The <UniqueIdentifier> property for vcxproj filters isn't calling os.uuid with string input

When outputting unique ids for filters in vcxproj files, the code is currently
_p(3, '{%s}', os.uuid())

This results in the id changing with every generation.

I've done this in the past:
_p(3, '{%s}', os.uuid(path))

If filters had the same path the id would end up the same, but not sure if that is possible or causes a problem. I never encountered it in my small sample set of me.

Add Xcode Base SDK setting

With this option iOS target could be selected.

Here is how it works in the IDE:
screen shot 2015-01-17 at 10 57 18

In xcodeproj file it possible only needs this setting in the XCBuildConfiguration section:
SDKROOT = macosx;
or
SDKROOT = iphoneos;

I volunteer to add this, but I am unsure if this should be a new option or use one of the currents.

generated makefiles are not completely thread safe (mkdir race condition)?

Hello,

when trying to build mame I am quite often faced with the following issue: mkdir and ar or some other program will run in parallel, but mkdir is too slower and ar would fail with "No such file or directory", e.g.:

make -R verbose=1 -C build/projects/sdl/mame/gmake-linux config=release32
make[1]: Entering directory '/builddir/build/BUILD/mame-0.163/build/projects/sdl/mame/gmake-linux'
Creating ../../../../linux_gcc/bin/x32/Release/mame_mame
Creating ../../../../linux_gcc/bin/x32/Release/mame_mame
mkdir -p "../../../../linux_gcc/bin/x32/Release/mame_mame"
mkdir -p "../../../../linux_gcc/bin/x32/Release/mame_mame"
Archiving libocore_sdl.a...
ar -rcs ../../../../linux_gcc/bin/x32/Release/mame_mame/libocore_sdl.a ../../../../linux_gcc/obj/x32/Release/ocore_sdl/src/osd/osdcore.o ../../../../linux_gcc/obj/x32/Release/ocore_sdl/src/osd/strconv.o ../../../../linux_gcc/obj/x32/Release/ocore_sdl/src/osd/sdl/sdldir.o ../../../../linux_gcc/obj/x32/Release/ocore_sdl/src/osd/sdl/sdlfile.o ../../../../linux_gcc/obj/x32/Release/ocore_sdl/src/osd/sdl/sdlptty_unix.o ../../../../linux_gcc/obj/x32/Release/ocore_sdl/src/osd/sdl/sdlsocket.o ../../../../linux_gcc/obj/x32/Release/ocore_sdl/src/osd/sdl/sdlos_unix.o ../../../../linux_gcc/obj/x32/Release/ocore_sdl/src/osd/modules/osdmodule.o ../../../../linux_gcc/obj/x32/Release/ocore_sdl/src/osd/modules/lib/osdlib_unix.o ../../../../linux_gcc/obj/x32/Release/ocore_sdl/src/osd/modules/sync/sync_tc.o ../../../../linux_gcc/obj/x32/Release/ocore_sdl/src/osd/modules/sync/work_osd.o
ar: ../../../../linux_gcc/bin/x32/Release/mame_mame/libocore_sdl.a: No such file or directory
ocore_sdl.make:278: recipe for target '../../../../linux_gcc/bin/x32/Release/mame_mame/libocore_sdl.a' failed
make[2]: *** [../../../../linux_gcc/bin/x32/Release/mame_mame/libocore_sdl.a] Error 1
make[2]: *** Waiting for unfinished jobs....

Although I am not completely sure, I believe the issue is the same as the one mentioned for telepathy-glib here:
http://www.burtonini.com/wordpress/2012/08/02/debugging-parallelism-problems-in-make/

$(TARGET): $(GCH) $(OBJECTS) $(LDDEPS) $(RESOURCES)
@echo Archiving $(notdir $@)...
$(SILENT) $(LINKCMD) $(OBJECTS)
$(POSTBUILDCMDS)

$(TARGETDIR):
@echo Creating $(TARGETDIR)
-$(call MKDIR,$(TARGETDIR))

$(OBJDIRS):
-$(call MKDIR,$@)

elements calling mkdir (TARGETDIR and OBJDIRS) are not an explicit dependency of TARGET which leads to this.
If the telepathy entry is correct, I believe the solution would be to ensure the generated makefile looks like this:

$(TARGET): $(TARGETDIR) $(OBJDIRS) $(GCH) $(OBJECTS) $(LDDEPS) $(RESOURCES)

Is there a way to set compiler per project?

I'm trying to build a Android NDK project for multiple archs in one go (e.g. arm, mips, x86, etc...). Each of them requiring a different compiler.

So far I've been able to create make files for each of them with their own settings but I only found out how to set the global compiler.

Downloadable executable is 32-bit only

Just recommended someone to use genie over premake4, and they pointed out that the executable is 64 bit only. I didn't really think many folks still used 32-bit Windows day to day, but it may be worth having the windows executable 32-bit by default?

Personally I'm fine with dumping 32-bit, but thought it might be worth raising it just in case anyone else isn't using it for this reason.

Visual Studio Runtime library selection

Is it possible to select the RuntimeLibrary for the generated Visual Studio project files?

In my case I am linking against the pre-built SDL2 Development libraries for Windows. For compatibility with SDL2main.lib I would like both my Debug and Release configurations to use the Multi-threaded DLL (/MD) runtime rather than the Debug configuration defaulting to use the Multi-threaded Debug DLL (/MDd). Is this possible?

Problem,linker errors.

Hello!

The thing is,that I want to make a static lib project and then link it from another project.
The problem comes when I build the second project, because it gives me some "unresolved external syombol" errors.
Those errors come from another lib that is linked to the parent project.
Let me show you the genie config file:
http://pastebin.com/f5F6yvDG
So the question is: How should I do it? (I dont think its correct that I have to link it in both projects)
See you!

EDIT:
Let me explain how I would like the projects:

Engine(Static Lib)
+Linked with glew/glfw/etc
Game(.exe)
+Linked only with the engine lib

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.