1
0
forked from 0ad/0ad

Add support for OpenBSD. Fixes #1463.

Backport os_getversion from premake4.4-beta4 and extend it to support
POSIX-compilant systems.
Add some missing newlines at the end of file as these cause warnings on
OpenBSD.
Update the config paths.

This was SVN commit r11970.
This commit is contained in:
leper 2012-06-13 20:43:56 +00:00
parent f056b8f6f0
commit 637c09b204
27 changed files with 492 additions and 182 deletions

View File

@ -5,11 +5,15 @@
; * create a text file called "local.cfg" instead, and copy *
; * the lines from this file that you want to change. *
; * *
; * On Linux / OS X, create: *
; * ~/.config/0ad/config/local.cfg *
; * On Linux, create: *
; * $XDG_CONFIG_HOME/0ad/config/local.cfg *
; * (Note: $XDG_CONFIG_HOME defaults to ~/.config) *
; * *
; * On OS X, create: *
; * ~/Library/Application\ Support/0ad/config/local.cfg *
; * *
; * On Windows, create: *
; * %appdata%/0ad/config/local.cfg *
; * %appdata%\0ad\config\local.cfg *
; * *
; **************************************************************

View File

@ -211,6 +211,14 @@ extern_lib_defs = {
if os.is("windows") then
add_default_include_paths("boost")
end
if os.getversion().description == "OpenBSD" then
includedirs { "/usr/local/include" }
end
-- Uncomment the following for your system if you are using boost <= 1.42
add_default_links({
--unix_names = { "boost_system-mt" }
--bsd_names = { "boost_system" }
})
end,
link_settings = function()
if os.is("windows") then
@ -351,6 +359,9 @@ extern_lib_defs = {
if os.is("windows") then
add_default_include_paths("libpng")
end
if os.getversion().description == "OpenBSD" then
includedirs { "/usr/local/include/libpng" }
end
end,
link_settings = function()
if os.is("windows") then
@ -534,6 +545,14 @@ extern_lib_defs = {
if os.is("windows") then
add_default_lib_paths("vorbis")
end
-- TODO: We need to force linking with these as currently
-- they need to be loaded explicitly on execution
if os.getversion().description == "OpenBSD" then
add_default_links({
unix_names = { "ogg",
"vorbis" },
})
end
add_default_links({
win_names = { "vorbisfile" },
unix_names = { "vorbisfile" },

View File

@ -765,7 +765,7 @@ function setup_main_exe ()
links { "fam" }
end
if not _OPTIONS["android"] then
if not _OPTIONS["android"] and not (os.getversion().description == "OpenBSD") then
links { "rt" }
end
@ -774,14 +774,14 @@ function setup_main_exe ()
linkoptions { "-Wl,--fix-cortex-a8" }
end
if os.is("linux") then
if os.is("linux") or os.getversion().description == "GNU/kFreeBSD" then
links {
-- Dynamic libraries (needed for linking for gold)
"dl",
}
elseif os.is("bsd") then
links {
-- Needed for backtrace* on FreeBSD
-- Needed for backtrace* on BSDs
"execinfo",
}
end
@ -1014,7 +1014,9 @@ function setup_collada_project(project_name, target_type, rel_source_dirs, rel_i
linkoptions { "-rdynamic" }
elseif os.is("bsd") then
-- define BSD-something?
if os.getversion().description == "OpenBSD" then
links { "c", }
end
buildoptions { "-fno-strict-aliasing" }
@ -1180,7 +1182,7 @@ function setup_tests()
links { "fam" }
end
if not _OPTIONS["android"] then
if not _OPTIONS["android"] and not (os.getversion().description == "OpenBSD") then
links { "rt" }
end
@ -1189,14 +1191,14 @@ function setup_tests()
linkoptions { "-Wl,--fix-cortex-a8" }
end
if os.is("linux") then
if os.is("linux") or os.getversion().description == "GNU/kFreeBSD" then
links {
-- Dynamic libraries (needed for linking for gold)
"dl",
}
elseif os.is("bsd") then
links {
-- Needed for backtrace* on FreeBSD
-- Needed for backtrace* on BSDs
"execinfo",
}
end

View File

@ -64,49 +64,50 @@ ifeq ($(config),debug)
endif
OBJECTS := \
$(OBJDIR)/os_getcwd.o \
$(OBJDIR)/path_isabsolute.o \
$(OBJDIR)/os_isdir.o \
$(OBJDIR)/os_rmdir.o \
$(OBJDIR)/os_chdir.o \
$(OBJDIR)/os_uuid.o \
$(OBJDIR)/os_isfile.o \
$(OBJDIR)/os_match.o \
$(OBJDIR)/os_pathsearch.o \
$(OBJDIR)/os_copyfile.o \
$(OBJDIR)/os_mkdir.o \
$(OBJDIR)/premake.o \
$(OBJDIR)/os_uuid.o \
$(OBJDIR)/os_copyfile.o \
$(OBJDIR)/os_isdir.o \
$(OBJDIR)/string_endswith.o \
$(OBJDIR)/os_isfile.o \
$(OBJDIR)/os_getcwd.o \
$(OBJDIR)/os_rmdir.o \
$(OBJDIR)/os_pathsearch.o \
$(OBJDIR)/premake.o \
$(OBJDIR)/path_isabsolute.o \
$(OBJDIR)/scripts.o \
$(OBJDIR)/liolib.o \
$(OBJDIR)/ltm.o \
$(OBJDIR)/linit.o \
$(OBJDIR)/loadlib.o \
$(OBJDIR)/lgc.o \
$(OBJDIR)/lstate.o \
$(OBJDIR)/llex.o \
$(OBJDIR)/lstrlib.o \
$(OBJDIR)/lmem.o \
$(OBJDIR)/lopcodes.o \
$(OBJDIR)/ldump.o \
$(OBJDIR)/lmathlib.o \
$(OBJDIR)/ldo.o \
$(OBJDIR)/ltablib.o \
$(OBJDIR)/lparser.o \
$(OBJDIR)/lfunc.o \
$(OBJDIR)/lobject.o \
$(OBJDIR)/ldebug.o \
$(OBJDIR)/ldblib.o \
$(OBJDIR)/os_chdir.o \
$(OBJDIR)/os_match.o \
$(OBJDIR)/os_getversion.o \
$(OBJDIR)/lauxlib.o \
$(OBJDIR)/lzio.o \
$(OBJDIR)/ldebug.o \
$(OBJDIR)/ltablib.o \
$(OBJDIR)/liolib.o \
$(OBJDIR)/lstrlib.o \
$(OBJDIR)/ldo.o \
$(OBJDIR)/ldump.o \
$(OBJDIR)/loslib.o \
$(OBJDIR)/lcode.o \
$(OBJDIR)/lapi.o \
$(OBJDIR)/ltable.o \
$(OBJDIR)/lbaselib.o \
$(OBJDIR)/lvm.o \
$(OBJDIR)/lstring.o \
$(OBJDIR)/lundump.o \
$(OBJDIR)/ldblib.o \
$(OBJDIR)/lmem.o \
$(OBJDIR)/ltm.o \
$(OBJDIR)/lstate.o \
$(OBJDIR)/lmathlib.o \
$(OBJDIR)/lvm.o \
$(OBJDIR)/ltable.o \
$(OBJDIR)/llex.o \
$(OBJDIR)/lgc.o \
$(OBJDIR)/loadlib.o \
$(OBJDIR)/lfunc.o \
$(OBJDIR)/lopcodes.o \
$(OBJDIR)/lparser.o \
$(OBJDIR)/lbaselib.o \
$(OBJDIR)/lzio.o \
$(OBJDIR)/linit.o \
$(OBJDIR)/lobject.o \
$(OBJDIR)/lstring.o \
$(OBJDIR)/lapi.o \
$(OBJDIR)/lcode.o \
RESOURCES := \
@ -167,135 +168,138 @@ $(GCH): $(PCH) | $(OBJDIR)
$(SILENT) $(CC) $(CFLAGS) -o "$@" -c "$<"
endif
$(OBJDIR)/os_getcwd.o: ../../src/host/os_getcwd.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_getcwd.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/path_isabsolute.o: ../../src/host/path_isabsolute.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/path_isabsolute.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_isdir.o: ../../src/host/os_isdir.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_isdir.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_rmdir.o: ../../src/host/os_rmdir.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_rmdir.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_chdir.o: ../../src/host/os_chdir.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_chdir.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_uuid.o: ../../src/host/os_uuid.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_uuid.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_isfile.o: ../../src/host/os_isfile.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_isfile.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_match.o: ../../src/host/os_match.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_match.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_pathsearch.o: ../../src/host/os_pathsearch.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_pathsearch.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_copyfile.o: ../../src/host/os_copyfile.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_copyfile.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_mkdir.o: ../../src/host/os_mkdir.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_mkdir.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/premake.o: ../../src/host/premake.c $(GCH) | prebuild
$(OBJDIR)/os_uuid.o: ../../src/host/os_uuid.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/premake.d -MT "$@" -o "$@" -c "$<"
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_uuid.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_copyfile.o: ../../src/host/os_copyfile.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_copyfile.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_isdir.o: ../../src/host/os_isdir.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_isdir.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/string_endswith.o: ../../src/host/string_endswith.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/string_endswith.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_isfile.o: ../../src/host/os_isfile.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_isfile.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_getcwd.o: ../../src/host/os_getcwd.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_getcwd.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_rmdir.o: ../../src/host/os_rmdir.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_rmdir.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_pathsearch.o: ../../src/host/os_pathsearch.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_pathsearch.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/premake.o: ../../src/host/premake.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/premake.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/path_isabsolute.o: ../../src/host/path_isabsolute.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/path_isabsolute.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/scripts.o: ../../src/host/scripts.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/scripts.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/liolib.o: ../../src/host/lua-5.1.4/src/liolib.c $(GCH) | prebuild
$(OBJDIR)/os_chdir.o: ../../src/host/os_chdir.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/liolib.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/ltm.o: ../../src/host/lua-5.1.4/src/ltm.c $(GCH) | prebuild
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_chdir.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_match.o: ../../src/host/os_match.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/ltm.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/linit.o: ../../src/host/lua-5.1.4/src/linit.c $(GCH) | prebuild
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_match.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/os_getversion.o: ../../src/host/os_getversion.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/linit.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/loadlib.o: ../../src/host/lua-5.1.4/src/loadlib.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/loadlib.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lgc.o: ../../src/host/lua-5.1.4/src/lgc.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lgc.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lstate.o: ../../src/host/lua-5.1.4/src/lstate.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lstate.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/llex.o: ../../src/host/lua-5.1.4/src/llex.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/llex.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lstrlib.o: ../../src/host/lua-5.1.4/src/lstrlib.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lstrlib.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lmem.o: ../../src/host/lua-5.1.4/src/lmem.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lmem.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lopcodes.o: ../../src/host/lua-5.1.4/src/lopcodes.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lopcodes.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/ldump.o: ../../src/host/lua-5.1.4/src/ldump.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/ldump.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lmathlib.o: ../../src/host/lua-5.1.4/src/lmathlib.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lmathlib.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/ldo.o: ../../src/host/lua-5.1.4/src/ldo.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/ldo.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/ltablib.o: ../../src/host/lua-5.1.4/src/ltablib.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/ltablib.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lparser.o: ../../src/host/lua-5.1.4/src/lparser.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lparser.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lfunc.o: ../../src/host/lua-5.1.4/src/lfunc.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lfunc.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lobject.o: ../../src/host/lua-5.1.4/src/lobject.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lobject.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/ldebug.o: ../../src/host/lua-5.1.4/src/ldebug.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/ldebug.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/ldblib.o: ../../src/host/lua-5.1.4/src/ldblib.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/ldblib.d -MT "$@" -o "$@" -c "$<"
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/os_getversion.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lauxlib.o: ../../src/host/lua-5.1.4/src/lauxlib.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lauxlib.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lzio.o: ../../src/host/lua-5.1.4/src/lzio.c $(GCH) | prebuild
$(OBJDIR)/ldebug.o: ../../src/host/lua-5.1.4/src/ldebug.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lzio.d -MT "$@" -o "$@" -c "$<"
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/ldebug.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/ltablib.o: ../../src/host/lua-5.1.4/src/ltablib.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/ltablib.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/liolib.o: ../../src/host/lua-5.1.4/src/liolib.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/liolib.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lstrlib.o: ../../src/host/lua-5.1.4/src/lstrlib.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lstrlib.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/ldo.o: ../../src/host/lua-5.1.4/src/ldo.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/ldo.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/ldump.o: ../../src/host/lua-5.1.4/src/ldump.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/ldump.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/loslib.o: ../../src/host/lua-5.1.4/src/loslib.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/loslib.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lcode.o: ../../src/host/lua-5.1.4/src/lcode.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lcode.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lapi.o: ../../src/host/lua-5.1.4/src/lapi.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lapi.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/ltable.o: ../../src/host/lua-5.1.4/src/ltable.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/ltable.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lbaselib.o: ../../src/host/lua-5.1.4/src/lbaselib.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lbaselib.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lvm.o: ../../src/host/lua-5.1.4/src/lvm.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lvm.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lstring.o: ../../src/host/lua-5.1.4/src/lstring.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lstring.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lundump.o: ../../src/host/lua-5.1.4/src/lundump.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lundump.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/ldblib.o: ../../src/host/lua-5.1.4/src/ldblib.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/ldblib.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lmem.o: ../../src/host/lua-5.1.4/src/lmem.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lmem.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/ltm.o: ../../src/host/lua-5.1.4/src/ltm.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/ltm.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lstate.o: ../../src/host/lua-5.1.4/src/lstate.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lstate.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lmathlib.o: ../../src/host/lua-5.1.4/src/lmathlib.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lmathlib.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lvm.o: ../../src/host/lua-5.1.4/src/lvm.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lvm.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/ltable.o: ../../src/host/lua-5.1.4/src/ltable.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/ltable.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/llex.o: ../../src/host/lua-5.1.4/src/llex.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/llex.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lgc.o: ../../src/host/lua-5.1.4/src/lgc.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lgc.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/loadlib.o: ../../src/host/lua-5.1.4/src/loadlib.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/loadlib.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lfunc.o: ../../src/host/lua-5.1.4/src/lfunc.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lfunc.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lopcodes.o: ../../src/host/lua-5.1.4/src/lopcodes.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lopcodes.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lparser.o: ../../src/host/lua-5.1.4/src/lparser.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lparser.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lbaselib.o: ../../src/host/lua-5.1.4/src/lbaselib.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lbaselib.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lzio.o: ../../src/host/lua-5.1.4/src/lzio.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lzio.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/linit.o: ../../src/host/lua-5.1.4/src/linit.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/linit.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lobject.o: ../../src/host/lua-5.1.4/src/lobject.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lobject.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lstring.o: ../../src/host/lua-5.1.4/src/lstring.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lstring.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lapi.o: ../../src/host/lua-5.1.4/src/lapi.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lapi.d -MT "$@" -o "$@" -c "$<"
$(OBJDIR)/lcode.o: ../../src/host/lua-5.1.4/src/lcode.c $(GCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CC) $(PCHINCLUDES) $(CFLAGS) -MF $(OBJDIR)/lcode.d -MT "$@" -o "$@" -c "$<"
-include $(OBJECTS:%.o=%.d)
-include $(GCH:%.h.gch=%.h.d)

View File

@ -1,7 +1,7 @@
--
-- os.lua
-- Additions to the OS namespace.
-- Copyright (c) 2002-2010 Jason Perkins and the Premake project
-- Copyright (c) 2002-2011 Jason Perkins and the Premake project
--
@ -26,6 +26,9 @@
if os.is("windows") then
formats = { "%s.dll", "%s" }
path = os.getenv("PATH")
elseif os.is("haiku") then
formats = { "lib%s.so", "%s.so" }
path = os.getenv("LIBRARY_PATH")
else
if os.is("macosx") then
formats = { "lib%s.dylib", "%s.dylib" }
@ -179,6 +182,18 @@
end
--
-- Run a shell command and return the output.
--
function os.outputof(cmd)
local pipe = io.popen(cmd)
local result = pipe:read('*a')
pipe:close()
return result
end
--
-- Remove a directory, along with any contained files or subdirectories.
--

View File

@ -0,0 +1,231 @@
/**
* \file os_getversioninfo.c
* \brief Retrieve operating system version information.
* \author Copyright (c) 2011 Jason Perkins and the Premake project
*/
#include "premake.h"
struct OsVersionInfo
{
int majorversion;
int minorversion;
int revision;
const char* description;
} ;
static void getversion(struct OsVersionInfo* info);
int os_getversion(lua_State* L)
{
struct OsVersionInfo info;
getversion(&info);
lua_newtable(L);
lua_pushstring(L, "majorversion");
lua_pushnumber(L, info.majorversion);
lua_settable(L, -3);
lua_pushstring(L, "minorversion");
lua_pushnumber(L, info.minorversion);
lua_settable(L, -3);
lua_pushstring(L, "revision");
lua_pushnumber(L, info.revision);
lua_settable(L, -3);
lua_pushstring(L, "description");
lua_pushstring(L, info.description);
lua_settable(L, -3);
return 1;
}
/*************************************************************/
#if defined(PLATFORM_WINDOWS)
#if !defined(VER_SUITE_WH_SERVER)
#define VER_SUITE_WH_SERVER (0x00008000)
#endif
#ifndef SM_SERVERR2
# define SM_SERVERR2 89
#endif
SYSTEM_INFO getsysteminfo()
{
typedef void (WINAPI *GetNativeSystemInfoSig)(LPSYSTEM_INFO);
GetNativeSystemInfoSig nativeSystemInfo = (GetNativeSystemInfoSig)
GetProcAddress(GetModuleHandle(TEXT("kernel32")), "GetNativeSystemInfo");
SYSTEM_INFO systemInfo = {{0}};
if ( nativeSystemInfo ) nativeSystemInfo(&systemInfo);
else GetSystemInfo(&systemInfo);
return systemInfo;
}
void getversion(struct OsVersionInfo* info)
{
OSVERSIONINFOEX versionInfo = {0};
versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
GetVersionEx((OSVERSIONINFO*)&versionInfo);
info->majorversion = versionInfo.dwMajorVersion;
info->minorversion = versionInfo.dwMinorVersion;
info->revision = versionInfo.wServicePackMajor;
if (versionInfo.dwMajorVersion == 5 && versionInfo.dwMinorVersion == 0)
{
info->description = "Windows 2000";
}
else if (versionInfo.dwMajorVersion == 5 && versionInfo.dwMinorVersion == 1)
{
info->description = "Windows XP";
}
else if (versionInfo.dwMajorVersion == 5 && versionInfo.dwMinorVersion == 2)
{
SYSTEM_INFO systemInfo = getsysteminfo();
if (versionInfo.wProductType == VER_NT_WORKSTATION &&
systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
{
info->description = "Windows XP Professional x64";
}
else if (versionInfo.wSuiteMask & VER_SUITE_WH_SERVER)
{
info->description = "Windows Home Server";
}
else if (GetSystemMetrics(SM_SERVERR2) == 0)
{
info->description = "Windows Server 2003";
}
else
{
info->description = "Windows Server 2003 R2";
}
}
else if (versionInfo.dwMajorVersion == 6 && versionInfo.dwMinorVersion == 0)
{
if (versionInfo.wProductType == VER_NT_WORKSTATION)
{
info->description = "Windows Vista";
}
else
{
info->description = "Windows Server 2008";
}
}
else if (versionInfo.dwMajorVersion == 6 && versionInfo.dwMinorVersion == 1 )
{
if (versionInfo.wProductType != VER_NT_WORKSTATION)
{
info->description = "Windows Server 2008 R2";
}
else
{
info->description = "Windows 7";
}
}
else
{
info->description = "Windows";
}
}
/*************************************************************/
#elif defined(PLATFORM_MACOSX)
#include <CoreServices/CoreServices.h>
void getversion(struct OsVersionInfo* info)
{
SInt32 majorversion, minorversion, bugfix;
Gestalt(gestaltSystemVersionMajor, &majorversion);
Gestalt(gestaltSystemVersionMinor, &minorversion);
Gestalt(gestaltSystemVersionBugFix, &bugfix);
info->majorversion = majorversion;
info->minorversion = minorversion;
info->revision = bugfix;
info->description = "Mac OS X";
if (info->majorversion == 10)
{
switch (info->minorversion)
{
case 4:
info->description = "Mac OS X Tiger";
break;
case 5:
info->description = "Mac OS X Leopard";
break;
case 6:
info->description = "Mac OS X Snow Leopard";
break;
case 7:
info->description = "Mac OS X Lion";
break;
}
}
}
/*************************************************************/
#elif defined(PLATFORM_BSD) || defined(PLATFORM_LINUX) || defined(PLATFORM_SOLARIS)
#include <stdlib.h>
#include <string.h>
#include <sys/utsname.h>
void getversion(struct OsVersionInfo* info)
{
struct utsname u;
char* ver;
info->majorversion = 0;
info->minorversion = 0;
info->revision = 0;
if (uname(&u))
{
// error
info->description = PLATFORM_STRING;
return;
}
#if !defined(PLATFORM_LINUX)
info->description = u.sysname;
#else
// On Linux info->sysname gets set, but it isn't passed out of this function
info->description = "Linux";
#endif
if ((ver = strtok(u.release, ".-")) != NULL)
{
info->majorversion = atoi(ver);
// continue parsing from the previous position
if ((ver = strtok(NULL, ".-")) != NULL)
{
info->minorversion = atoi(ver);
if ((ver = strtok(NULL, ".-")) != NULL)
info->revision = atoi(ver);
}
}
}
/*************************************************************/
#else
void getversion(struct OsVersionInfo* info)
{
info->majorversion = 0;
info->minorversion = 0;
info->revision = 0;
info->description = PLATFORM_STRING;
}
#endif

View File

@ -38,6 +38,7 @@ static const luaL_Reg os_functions[] = {
{ "copyfile", os_copyfile },
{ "isdir", os_isdir },
{ "getcwd", os_getcwd },
{ "getversion", os_getversion },
{ "isfile", os_isfile },
{ "matchdone", os_matchdone },
{ "matchisfile", os_matchisfile },

View File

@ -1,7 +1,7 @@
/**
* \file premake.h
* \brief Program-wide constants and definitions.
* \author Copyright (c) 2002-2008 Jason Perkins and the Premake project
* \author Copyright (c) 2002-2011 Jason Perkins and the Premake project
*/
#define lua_c
@ -15,7 +15,7 @@
#if defined(__linux__)
#define PLATFORM_LINUX (1)
#define PLATFORM_STRING "linux"
#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD_kernel__)
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
#define PLATFORM_BSD (1)
#define PLATFORM_STRING "bsd"
#elif defined(__APPLE__) && defined(__MACH__)
@ -24,6 +24,9 @@
#elif defined(__sun__) && defined(__svr4__)
#define PLATFORM_SOLARIS (1)
#define PLATFORM_STRING "solaris"
#elif defined(__HAIKU__)
#define PLATFORM_HAIKU (1)
#define PLATFORM_STRING "haiku"
#else
#define PLATFORM_WINDOWS (1)
#define PLATFORM_STRING "windows"
@ -52,6 +55,7 @@ int path_isabsolute(lua_State* L);
int os_chdir(lua_State* L);
int os_copyfile(lua_State* L);
int os_getcwd(lua_State* L);
int os_getversion(lua_State* L);
int os_isdir(lua_State* L);
int os_isfile(lua_State* L);
int os_matchdone(lua_State* L);

View File

@ -4,9 +4,10 @@
const char* builtin_scripts[] = {
/* base/os.lua */
"function os.executef(cmd, ...)\ncmd = string.format(cmd, unpack(arg))\nreturn os.execute(cmd)\nend\nfunction os.findlib(libname)\nlocal path, formats\nif os.is(\"windows\") then\nformats = { \"%s.dll\", \"%s\" }\npath = os.getenv(\"PATH\")\nelse\nif os.is(\"macosx\") then\nformats = { \"lib%s.dylib\", \"%s.dylib\" }\npath = os.getenv(\"DYLD_LIBRARY_PATH\")\nelse\nformats = { \"lib%s.so\", \"%s.so\" }\npath = os.getenv(\"LD_LIBRARY_PATH\") or \"\"\nio.input(\"/etc/ld.so.conf\")\nif io.input() then\nfor line in io.lines() do\npath = path .. \":\" .. line\nend\nio.input():close()\nend\nend\ntable.insert(formats, \"%s\")\npath = (path or \"\") .. \":/lib:/usr/lib:/usr/local/lib\"\nend\nfor _, fmt in ipairs(formats) do\nlocal name = string.format(fmt, libname)\nlocal result = os.pathsearch(name, path)\nif result then return result end\nend\nend\nfunction os.get()\nreturn _OPTIONS.os or _OS\nend\nfunction os.is(id)\nreturn (os.get():lower() == id:lower())\nend\nlocal function domatch(result, mask, wantfiles)\nif mas"
"k:startswith(\"./\") then\nmask = mask:sub(3)\nend\nlocal basedir = mask\nlocal starpos = mask:find(\"%*\")\nif starpos then\nbasedir = basedir:sub(1, starpos - 1)\nend\nbasedir = path.getdirectory(basedir)\nif (basedir == \".\") then basedir = \"\" end\nlocal recurse = mask:find(\"**\", nil, true)\nmask = path.wildcards(mask)\nlocal function matchwalker(basedir)\nlocal wildcard = path.join(basedir, \"*\")\nlocal m = os.matchstart(wildcard)\nwhile (os.matchnext(m)) do\nlocal isfile = os.matchisfile(m)\nif ((wantfiles and isfile) or (not wantfiles and not isfile)) then\nlocal fname = path.join(basedir, os.matchname(m))\nif fname:match(mask) == fname then\ntable.insert(result, fname)\nend\nend\nend\nos.matchdone(m)\nif recurse then\nm = os.matchstart(wildcard)\nwhile (os.matchnext(m)) do\nif not os.matchisfile(m) then\nlocal dirname = os.matchname(m)\nmatchwalker(path.join(basedir, dirname))\nend\nend\nos.matchdone(m)\nend\nend\nmatchwalker(basedir)\nend\nfunction os.matchdirs(...)\nlocal result = { }\nfor _, ma"
"sk in ipairs(arg) do\ndomatch(result, mask, false)\nend\nreturn result\nend\nfunction os.matchfiles(...)\nlocal result = { }\nfor _, mask in ipairs(arg) do\ndomatch(result, mask, true)\nend\nreturn result\nend\nlocal builtin_mkdir = os.mkdir\nfunction os.mkdir(p)\nlocal dir = iif(p:startswith(\"/\"), \"/\", \"\")\nfor part in p:gmatch(\"[^/]+\") do\ndir = dir .. part\nif (part ~= \"\" and not path.isabsolute(part) and not os.isdir(dir)) then\nlocal ok, err = builtin_mkdir(dir)\nif (not ok) then\nreturn nil, err\nend\nend\ndir = dir .. \"/\"\nend\nreturn true\nend\nlocal builtin_rmdir = os.rmdir\nfunction os.rmdir(p)\nlocal dirs = os.matchdirs(p .. \"/*\")\nfor _, dname in ipairs(dirs) do\nos.rmdir(dname)\nend\nlocal files = os.matchfiles(p .. \"/*\")\nfor _, fname in ipairs(files) do\nos.remove(fname)\nend\nbuiltin_rmdir(p)\nend\n",
"function os.executef(cmd, ...)\ncmd = string.format(cmd, unpack(arg))\nreturn os.execute(cmd)\nend\nfunction os.findlib(libname)\nlocal path, formats\nif os.is(\"windows\") then\nformats = { \"%s.dll\", \"%s\" }\npath = os.getenv(\"PATH\")\nelseif os.is(\"haiku\") then\nformats = { \"lib%s.so\", \"%s.so\" }\npath = os.getenv(\"LIBRARY_PATH\")\nelse\nif os.is(\"macosx\") then\nformats = { \"lib%s.dylib\", \"%s.dylib\" }\npath = os.getenv(\"DYLD_LIBRARY_PATH\")\nelse\nformats = { \"lib%s.so\", \"%s.so\" }\npath = os.getenv(\"LD_LIBRARY_PATH\") or \"\"\nio.input(\"/etc/ld.so.conf\")\nif io.input() then\nfor line in io.lines() do\npath = path .. \":\" .. line\nend\nio.input():close()\nend\nend\ntable.insert(formats, \"%s\")\npath = (path or \"\") .. \":/lib:/usr/lib:/usr/local/lib\"\nend\nfor _, fmt in ipairs(formats) do\nlocal name = string.format(fmt, libname)\nlocal result = os.pathsearch(name, path)\nif result then return result end\nend\nend\nfunction os.get()\nreturn _OPTIONS.os or _OS\nend\nfunction os.is(i"
"d)\nreturn (os.get():lower() == id:lower())\nend\nlocal function domatch(result, mask, wantfiles)\nif mask:startswith(\"./\") then\nmask = mask:sub(3)\nend\nlocal basedir = mask\nlocal starpos = mask:find(\"%*\")\nif starpos then\nbasedir = basedir:sub(1, starpos - 1)\nend\nbasedir = path.getdirectory(basedir)\nif (basedir == \".\") then basedir = \"\" end\nlocal recurse = mask:find(\"**\", nil, true)\nmask = path.wildcards(mask)\nlocal function matchwalker(basedir)\nlocal wildcard = path.join(basedir, \"*\")\nlocal m = os.matchstart(wildcard)\nwhile (os.matchnext(m)) do\nlocal isfile = os.matchisfile(m)\nif ((wantfiles and isfile) or (not wantfiles and not isfile)) then\nlocal fname = path.join(basedir, os.matchname(m))\nif fname:match(mask) == fname then\ntable.insert(result, fname)\nend\nend\nend\nos.matchdone(m)\nif recurse then\nm = os.matchstart(wildcard)\nwhile (os.matchnext(m)) do\nif not os.matchisfile(m) then\nlocal dirname = os.matchname(m)\nmatchwalker(path.join(basedir, dirname))\nend\nend\nos.mat"
"chdone(m)\nend\nend\nmatchwalker(basedir)\nend\nfunction os.matchdirs(...)\nlocal result = { }\nfor _, mask in ipairs(arg) do\ndomatch(result, mask, false)\nend\nreturn result\nend\nfunction os.matchfiles(...)\nlocal result = { }\nfor _, mask in ipairs(arg) do\ndomatch(result, mask, true)\nend\nreturn result\nend\nlocal builtin_mkdir = os.mkdir\nfunction os.mkdir(p)\nlocal dir = iif(p:startswith(\"/\"), \"/\", \"\")\nfor part in p:gmatch(\"[^/]+\") do\ndir = dir .. part\nif (part ~= \"\" and not path.isabsolute(part) and not os.isdir(dir)) then\nlocal ok, err = builtin_mkdir(dir)\nif (not ok) then\nreturn nil, err\nend\nend\ndir = dir .. \"/\"\nend\nreturn true\nend\nfunction os.outputof(cmd)\nlocal pipe = io.popen(cmd)\nlocal result = pipe:read('*a')\npipe:close()\nreturn result\nend\nlocal builtin_rmdir = os.rmdir\nfunction os.rmdir(p)\nlocal dirs = os.matchdirs(p .. \"/*\")\nfor _, dname in ipairs(dirs) do\nos.rmdir(dname)\nend\nlocal files = os.matchfiles(p .. \"/*\")\nfor _, fname in ipairs(files) do\nos."
"remove(fname)\nend\nbuiltin_rmdir(p)\nend\n",
/* base/path.lua */
"function path.getabsolute(p)\np = path.translate(p, \"/\")\nif (p == \"\") then p = \".\" end\nlocal result = iif (path.isabsolute(p), nil, os.getcwd())\nfor n, part in ipairs(p:explode(\"/\", true)) do\nif (part == \"\" and n == 1) then\nresult = \"/\"\nelseif (part == \"..\") then\nresult = path.getdirectory(result)\nelseif (part ~= \".\") then\nresult = path.join(result, part)\nend\nend\nresult = iif(result:endswith(\"/\"), result:sub(1, -2), result)\nreturn result\nend\nfunction path.getbasename(p)\nlocal name = path.getname(p)\nlocal i = name:findlast(\".\", true)\nif (i) then\nreturn name:sub(1, i - 1)\nelse\nreturn name\nend\nend\nfunction path.getdirectory(p)\nlocal i = p:findlast(\"/\", true)\nif (i) then\nif i > 1 then i = i - 1 end\nreturn p:sub(1, i)\nelse\nreturn \".\"\nend\nend\nfunction path.getdrive(p)\nlocal ch1 = p:sub(1,1)\nlocal ch2 = p:sub(2,2)\nif ch2 == \":\" then\nreturn ch1\nend\nend\nfunction path.getextension(p)\nlocal i = p:findlast(\".\", true)\nif (i) then\nreturn p:sub(i)\nelse\n"

View File

@ -92,7 +92,7 @@ case "`uname -s`" in
# Only GNU and FreeBSD sed have the -i option (and redirecting
# to the same file results in an empty file and starting a subshell
# isn't as obvious as redirecting to a new file and replacing the old)
sed -e 's/-ldl //g' build/gmake.unix/Premake4.make > build/gmake.unix/Premake4.make_new
sed -e 's/ -ldl/ /g' build/gmake.unix/Premake4.make > build/gmake.unix/Premake4.make_new
mv build/gmake.unix/Premake4.make_new build/gmake.unix/Premake4.make
;;
esac

View File

@ -1,4 +1,4 @@
/* Copyright (c) 2010 Wildfire Games
/* Copyright (c) 2012 Wildfire Games
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
@ -73,7 +73,8 @@
#ifndef CONFIG2_FILE_ENABLE_AIO
// work around a bug introduced in Linux 2.6.38
// (http://www.wildfiregames.com/forum/index.php?showtopic=14561&view=findpost&p=217710)
# if OS_LINUX
// OpenBSD doesn't provide aio.h so we disable its use
# if OS_LINUX || OS_OPENBSD
# define CONFIG2_FILE_ENABLE_AIO 0
# else
# define CONFIG2_FILE_ENABLE_AIO 1

View File

@ -30,10 +30,22 @@
#if OS_WIN
# include "lib/sysdep/os/win/wposix/waio.h"
#elif OS_ANDROID
#elif OS_ANDROID || OS_OPENBSD
// Android doesn't provide aio.h. We don't actually use aio on Linuxes (see
// CONFIG2_FILE_ENABLE_AIO) but we use its symbols and structs, so define
// them here
# if OS_OPENBSD
// OpenBSD 5.1 (latest version at time of writing) has no struct sigevent defined,
// so we do this here.
struct sigevent
{
int sigev_notify;
int sigev_signo;
union sigval sigev_value;
void (*sigev_notify_function)(union sigval);
pthread_attr_t *sigev_notify_attributes;
};
# endif
# define LIO_READ 0
# define LIO_WRITE 1
# define LIO_NOP 2

View File

@ -1,4 +1,4 @@
/* Copyright (c) 2010 Wildfire Games
/* Copyright (c) 2012 Wildfire Games
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
@ -20,6 +20,9 @@
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#ifndef INCLUDED_POSIX_MMAN
#define INCLUDED_POSIX_MMAN
#if OS_WIN
# include "lib/sysdep/os/win/wposix/wmman.h"
#else
@ -27,3 +30,5 @@
#endif
#include "lib/posix/posix_errno.h" // for user convenience
#endif // #ifndef INCLUDED_POSIX_MMAN

View File

@ -106,7 +106,7 @@ STATUS_ADD_DEFINITIONS(secureCrtStatusDefinitions);
// self-test and the t* defines (needed for test).
#if EMULATE_SECURE_CRT
#if !OS_UNIX || OS_MACOSX
#if !OS_UNIX || OS_MACOSX || OS_OPENBSD
// return length [in characters] of a string, not including the trailing
// null character. to protect against access violations, only the
// first <max_len> characters are examined; if the null character is

View File

@ -47,12 +47,15 @@ namespace ERR
#if EMULATE_SECURE_CRT
// (conflicts with glibc definitions)
#if !OS_UNIX || OS_MACOSX
#if !OS_UNIX || OS_MACOSX || OS_OPENBSD
// return length [in characters] of a string, not including the trailing
// null character. to protect against access violations, only the
// first <max_len> characters are examined; if the null character is
// not encountered by then, <max_len> is returned.
// strnlen is available on OpenBSD
#if !OS_OPENBSD
extern size_t strnlen(const char* str, size_t max_len);
#endif
extern size_t wcsnlen(const wchar_t* str, size_t max_len);
#endif

View File

@ -1,4 +1,4 @@
/* Copyright (c) 2010 Wildfire Games
/* Copyright (c) 2012 Wildfire Games
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
@ -68,9 +68,16 @@
// BSD
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD_kernel__)
# define OS_BSD 1
// OpenBSD has no aio.h and we need a way to disable it for it only
# if defined(__OpenBSD__)
# define OS_OPENBSD 1
# endif
#else
# define OS_BSD 0
#endif
#ifndef OS_OPENBSD
# define OS_OPENBSD 0
#endif
// Solaris
#if defined(sun) || defined(__sun)
# define OS_SOLARIS 1

View File

@ -28,6 +28,7 @@
#include "lib/module_init.h"
#include "valgrind.h"
#include <sys/param.h>
#include <sys/sysctl.h>
size_t os_cpu_NumProcessors()