ref: 63acb55b18f024db74fd9a7eedbf3137922630c4
parent: b1d51276a264849ded93ce943eb0283c1f4f1aba
author: Simon Howard <fraggle@gmail.com>
date: Sun Aug 11 13:32:29 EDT 2013
Remove Windows CE support. What support exists is for obsolete devices I no longer possess; I've never been contacted about the port and it's been several years since I even bothered to build a new version. All the extra overrides are clutter that can just be removed. Subversion-branch: /branches/v2-branch Subversion-revision: 2615
--- a/Makefile.am
+++ b/Makefile.am
@@ -54,7 +54,7 @@
MAINTAINERCLEANFILES = $(AUX_DIST_GEN)
-SUBDIRS=wince textscreen opl pcsound data src man
+SUBDIRS=textscreen opl pcsound data src man
DIST_SUBDIRS=pkg $(SUBDIRS)
--- a/configure.in
+++ b/configure.in
@@ -90,20 +90,6 @@
AC_CHECK_TOOL(WINDRES, windres, )
AC_CHECK_TOOL(STRIP, strip, )
-# Windows CE build?
-
-WINDOWS_CE=false
-
-case "$host" in
- *mingw32ce*|*cegcc*|*wince*)
- CFLAGS="-I\$(top_builddir)/wince $CFLAGS"
- WINDOWS_CE=true
- ;;
- *)
- ;;
-esac
-
-AM_CONDITIONAL(WINDOWS_CE, $WINDOWS_CE)
AM_CONDITIONAL(HAVE_WINDRES, test "$WINDRES" != "")
AM_CONDITIONAL(HAVE_PYTHON, $HAVE_PYTHON)
@@ -170,6 +156,5 @@
src/strife/Makefile
textscreen/Makefile
textscreen/examples/Makefile
-wince/Makefile
])
--- a/opl/opl.c
+++ b/opl/opl.c
@@ -28,10 +28,6 @@
#include <stdio.h>
#include <stdlib.h>
-#ifdef _WIN32_WCE
-#include "libc_wince.h"
-#endif
-
#include "SDL.h"
#include "opl.h"
--- a/pcsound/pcsound.c
+++ b/pcsound/pcsound.c
@@ -27,10 +27,6 @@
#include <stdlib.h>
#include <string.h>
-#ifdef _WIN32_WCE
-#include "libc_wince.h"
-#endif
-
#include "config.h"
#include "pcsound.h"
#include "pcsound_internal.h"
--- a/pkg/Makefile.am
+++ b/pkg/Makefile.am
@@ -21,17 +21,9 @@
osx/IWADLocation.m osx/IWADLocation.h \
osx/LauncherManager.m osx/LauncherManager.h
-WINCE_FILES= \
-wince/GNUmakefile \
-wince/common.py \
-wince/doom-cab.cfg \
-wince/heretic-cab.cfg \
-wince/hexen-cab.cfg \
-wince/wince-cabgen
-
WIN32_FILES= \
win32/GNUmakefile \
win32/README
-EXTRA_DIST=$(OSX_FILES) $(WINCE_FILES) $(WIN32_FILES)
+EXTRA_DIST=$(OSX_FILES) $(WIN32_FILES)
--- a/pkg/wince/.gitignore
+++ /dev/null
@@ -1,3 +1,0 @@
-Makefile
-Makefile.in
-*.cab
--- a/pkg/wince/GNUmakefile
+++ /dev/null
@@ -1,35 +1,0 @@
-
-include ../config.make
-
-# Doom:
-
-DOOM_CAB=$(PROGRAM_PREFIX)doom-$(PACKAGE_VERSION).cab
-DOOM_CFG=doom-cab.cfg
-DOOM_DEPS=$(shell ./wince-cabgen -d $(DOOM_CFG))
-
-# Heretic:
-
-HERETIC_CAB=$(PROGRAM_PREFIX)heretic-$(PACKAGE_VERSION).cab
-HERETIC_CFG=heretic-cab.cfg
-HERETIC_DEPS=$(shell ./wince-cabgen -d $(HERETIC_CFG))
-
-# Hexen:
-
-HEXEN_CAB=$(PROGRAM_PREFIX)hexen-$(PACKAGE_VERSION).cab
-HEXEN_CFG=hexen-cab.cfg
-HEXEN_DEPS=$(shell ./wince-cabgen -d $(HEXEN_CFG))
-
-all: $(DOOM_CAB) $(HERETIC_CAB) $(HEXEN_CAB)
-
-$(DOOM_CAB) : $(DOOM_CFG) $(DOOM_DEPS)
- ./wince-cabgen $< $@
-
-$(HERETIC_CAB) : $(HERETIC_CFG) $(HERETIC_DEPS)
- ./wince-cabgen $< $@
-
-$(HEXEN_CAB) : $(HEXEN_CFG) $(HEXEN_DEPS)
- ./wince-cabgen $< $@
-
-clean:
- rm -f $(DOOM_CAB) $(HERETIC_CAB) $(HEXEN_CAB)
-
--- a/pkg/wince/common.py
+++ /dev/null
@@ -1,9 +1,0 @@
-
-# SDL library files that need to be installed:
-
-LIBRARIES = [ "SDL.dll", "SDL_mixer.dll", "libSDL_net-1-2-0.dll" ]
-
-def add_libraries(dir, files):
- for lib in LIBRARIES:
- files[dir + lib] = lib
-
--- a/pkg/wince/doom-cab.cfg
+++ /dev/null
@@ -1,27 +1,0 @@
-
-from common import *
-
-app_name = "Chocolate Doom"
-provider = "Simon Howard"
-arch = "strongarm"
-
-# Install files:
-
-d = "$(PROGRAMS_GAMES)/Chocolate Doom/"
-s = "$(START_GAMES)/"
-src = "../../src/"
-
-files = {
- d+"chocolate-doom.exe": src+"chocolate-doom.exe",
- d+"chocolate-doom-setup.exe": src+"chocolate-setup.exe",
-}
-
-add_libraries(d, files)
-
-# Start menu links:
-
-links = {
- s+"Chocolate Doom.lnk": d+"chocolate-doom.exe",
- s+"Chocolate Doom Setup.lnk": d+"chocolate-doom-setup.exe"
-}
-
--- a/pkg/wince/heretic-cab.cfg
+++ /dev/null
@@ -1,27 +1,0 @@
-
-from common import *
-
-app_name = "Chocolate Heretic"
-provider = "Simon Howard"
-arch = "strongarm"
-
-# Install files:
-
-d = "$(PROGRAMS_GAMES)/Chocolate Heretic/"
-s = "$(START_GAMES)/"
-src = "../../src/"
-
-files = {
- d+"chocolate-heretic.exe": src+"chocolate-heretic.exe",
- d+"chocolate-heretic-setup.exe": src+"chocolate-setup.exe",
-}
-
-add_libraries(d, files)
-
-# Start menu links:
-
-links = {
- s+"Chocolate Heretic.lnk": d+"chocolate-heretic.exe",
- s+"Chocolate Heretic Setup.lnk": d+"chocolate-heretic-setup.exe"
-}
-
--- a/pkg/wince/hexen-cab.cfg
+++ /dev/null
@@ -1,27 +1,0 @@
-
-from common import *
-
-app_name = "Chocolate Hexen"
-provider = "Simon Howard"
-arch = "strongarm"
-
-# Install files:
-
-d = "$(PROGRAMS_GAMES)/Chocolate Hexen/"
-s = "$(START_GAMES)/"
-src = "../../src/"
-
-files = {
- d+"chocolate-hexen.exe": src+"chocolate-hexen.exe",
- d+"chocolate-hexen-setup.exe": src+"chocolate-setup.exe",
-}
-
-add_libraries(d, files)
-
-# Start menu links:
-
-links = {
- s+"Chocolate Hexen.lnk": d+"chocolate-hexen.exe",
- s+"Chocolate Hexen Setup.lnk": d+"chocolate-hexen-setup.exe"
-}
-
--- a/pkg/wince/wince-cabgen
+++ /dev/null
@@ -1,668 +1,0 @@
-#!/usr/bin/env python
-
-import os
-import re
-import shutil
-import struct
-import sys
-import tempfile
-
-CAB_HEADER = "MSCE".encode("ascii")
-
-ARCHITECTURES = {
- "shx-sh3": 103,
- "shx-sh4": 104,
- "i386": 386,
- "i486": 486,
- "i586": 586,
- "powerpc-601": 601,
- "powerpc-603": 603,
- "powerpc-604": 604,
- "powerpc-620": 620,
- "powerpc-mpc821": 821,
- "arm720": 1824,
- "arm820": 2080,
- "arm920": 2336,
- "strongarm": 2577,
- "mips-r4000": 4000,
- "sh3": 10003,
- "sh3e": 10004,
- "sh4": 10005,
- "alpha-21064": 21064,
- "arm7tdmi": 70001,
-}
-
-DIR_VARIABLES = {
- "PROGRAMS": "%CE1%", # \Program Files
- "WINDOWS": "%CE2%", # \Windows
- "DESKTOP": "%CE3%", # \Windows\Desktop
- "STARTUP": "%CE4%", # \Windows\StartUp
- "DOCUMENTS": "%CE5%", # \My Documents
- "PROGRAMS_ACCESSORIES": "%CE6%", # \Program Files\Accessories
- "PROGRAMS_COMMUNICATIONS": "%CE7%", # \Program Files\Communications
- "PROGRAMS_GAMES": "%CE8%", # \Program Files\Games
- "PROGRAMS_OUTLOOK": "%CE9%", # \Program Files\Pocket Outlook
- "PROGRAMS_OFFICE": "%CE10%", # \Program Files\Office
- "WINDOWS_PROGRAMS": "%CE11%", # \Windows\Programs
- "WINDOWS_ACCESSORIES": "%CE12%", # \Windows\Programs\Accessories
- "WINDOWS_COMMUNICATIONS": "%CE13%", # \Windows\Programs\Communications
- "WINDOWS_GAMES": "%CE14%", # \Windows\Programs\Games
- "FONTS": "%CE15%", # \Windows\Fonts
- "RECENT": "%CE16%", # \Windows\Recent
- "FAVORITES": "%CE17%", # \Windows\Favorites
-
- "START_PROGRAMS": "%CE11%", # \Windows\Start Menu\Programs
- "START_ACCESSORIES": "%CE12%", # \Windows\Start Menu\Accessories
- "START_COMMUNICATIONS": "%CE13%", # \Windows\Start Menu\Communications
- "START_GAMES": "%CE14%", # \Windows\Start Menu\Games
- "START": "%CE17%", # \Windows\Start Menu
-}
-
-def write_int16(f, value):
- f.write(struct.pack("<H", value))
-
-def write_int32(f, value):
- f.write(struct.pack("<I", value))
-
-# Pad a string with NUL characters so that it has a length that is
-# a multiple of 4. At least one NUL is always added.
-
-def pad_string(s):
- pad_len = 4 - (len(s) % 4)
- return s + (pad_len * "\x00")
-
-class HeaderSection:
-
- def __init__(self, cab_header):
- self.cab_header = cab_header
- self.arch = None
- self.app_name = None
- self.provider = None
- self.unsupported = None
-
- def __len__(self):
- return 100 # header has fixed size
-
- def set_meta(self, arch, app_name, provider, unsupported):
-
- if arch not in ARCHITECTURES:
- raise Exception("Unknown architecture '%s'" % arch)
-
- self.arch = ARCHITECTURES[arch]
-
- dictionary = self.cab_header.dictionary
-
- self.app_name = app_name
- dictionary.get(self.app_name)
-
- self.provider = provider
- dictionary.get(self.provider)
-
- self.unsupported = unsupported
- dictionary.get(self.unsupported)
-
- def write(self, stream):
-
- # Basic header
-
- stream.write(CAB_HEADER)
- write_int32(stream, 0)
- write_int32(stream, len(self.cab_header))
- write_int32(stream, 0)
- write_int32(stream, 1)
- write_int32(stream, self.arch)
-
- # minimum Windows CE version:
- write_int32(stream, 0)
- write_int32(stream, 0)
- write_int32(stream, 0)
- write_int32(stream, 0)
- write_int32(stream, 0)
- write_int32(stream, 0)
-
- dictionary = self.cab_header.dictionary
-
- # Write number of entries in other sections:
-
- for section in self.cab_header.sections:
- if section is not self:
- write_int16(stream, section.num_entries())
-
- # Write offsets of other sections:
-
- for section in self.cab_header.sections:
- if section is not self:
- offset = self.cab_header.get_section_offset(section)
- write_int32(stream, offset)
-
- # Special strings:
-
- special_strings = (
- self.app_name,
- self.provider,
- self.unsupported
- )
-
- dictionary_offset = self.cab_header.get_section_offset(dictionary)
-
- for s in special_strings:
- s_offset = dictionary.get_offset(s)
- write_int16(stream, dictionary_offset + s_offset)
- write_int16(stream, len(s) + 1)
-
- # Two left-over fields of unknown use:
-
- write_int16(stream, 0)
- write_int16(stream, 0)
-
-class StringDictionary:
- def __init__(self, cab_header):
- self.cab_header = cab_header
- self.string_list = []
- self.strings = {}
- self.length = 0
- self.index = 1
-
- # Get the length of the dictionary, in bytes.
-
- def __len__(self):
- return self.length
-
- # Get the number of entries in the dictionary.
-
- def num_entries(self):
- return len(self.strings)
-
- # Get the ID for the given string, adding it if necessary.
-
- def get(self, s):
- # Is this a new string? Add it to the dictionary.
-
- if s not in self.strings:
- offset = self.length
- padded = pad_string(s)
-
- self.strings[s] = (self.index, offset)
- self.string_list.append((self.index, padded))
- self.length += len(padded) + 4
- self.index += 1
-
- return self.strings[s][0]
-
- # Get the offset of a particular string within the dictionary.
-
- def get_offset(self, s):
- return self.strings[s][1] + 4
-
- # Write the dictionary to the output stream.
-
- def write(self, stream):
-
- # Write out all strings:
-
- for i, s in self.string_list:
- write_int16(stream, i)
- write_int16(stream, len(s))
- stream.write(s.encode("ascii"))
-
-class DirectoryList:
- def __init__(self, cab_header):
- self.cab_header = cab_header
- self.directories_list = []
- self.directories = {}
- self.length = 0
- self.index = 1
-
- def __len__(self):
- return self.length
-
- def num_entries(self):
- return len(self.directories_list)
-
- # Find whether the specified directory exists in the list
-
- def find(self, dir):
- key = dir.lower()
-
- if key in self.directories:
- return self.directories[key]
- else:
- return None
-
- # Get the ID for the given directory, adding it if necessary.
-
- def get(self, dir):
-
- key = dir.lower()
- dictionary = self.cab_header.dictionary
-
- # Add new directory?
-
- if key not in self.directories:
-
- # Separate into individual directories, and map to strings:
-
- #dir_path = dir.split("\\")
- #if dir_path[0] == "":
- # dir_path = dir_path[1:]
- dir_path = [ dir ]
-
- dir_path = list(map(lambda x: dictionary.get(x), dir_path))
-
- self.directories[key] = self.index
- self.directories_list.append((self.index, dir_path))
- self.length += 6 + 2 * len(dir_path)
- self.index += 1
-
- return self.directories[key]
-
- # Write the directory list to the specified stream.
-
- def write(self, stream):
- for i, dir in self.directories_list:
- write_int16(stream, i)
- write_int16(stream, 2 * len(dir) + 2)
-
- for subdir in dir:
- write_int16(stream, subdir)
-
- write_int16(stream, 0)
-
-class FileList:
- def __init__(self, cab_header):
- self.cab_header = cab_header
- self.files = []
- self.length = 0
- self.index = 1
-
- # Get the length of this section, in bytes.
-
- def __len__(self):
- return self.length
-
- # Query whether the file list contains a particular file.
-
- def find(self, filename):
- dirname, sep, target_basename = filename.rpartition("\\")
-
- target_basename = pad_string(target_basename)
-
- target_dir_id = self.cab_header.directory_list.find(dirname)
-
- if target_dir_id is None:
- return None
- else:
- # Search the list of files:
-
- for i, dir_id, basename, file_no, flags in self.files:
- if dir_id == target_dir_id and basename == target_basename:
- return file_no
- else:
- return None
-
- # Get the number of entries in the file list
-
- def num_entries(self):
- return len(self.files)
-
- # Add a file to the list.
-
- def add(self, filename, file_no, flags=0):
-
- dirname, sep, basename = filename.rpartition("\\")
-
- dir_id = self.cab_header.directory_list.get(dirname)
-
- padded = pad_string(basename)
-
- self.files.append((self.index, dir_id, padded, file_no, flags))
- self.length += 12 + len(padded)
- self.index += 1
-
- # Write this section to the output stream.
-
- def write(self, stream):
-
- for i, dir_id, filename, file_no, flags in self.files:
- write_int16(stream, i)
- write_int16(stream, dir_id)
- write_int16(stream, file_no)
- write_int32(stream, flags)
- write_int16(stream, len(filename))
- stream.write(filename.encode("ascii"))
-
-# TODO?
-
-class RegHiveList:
- def __len__(self):
- return 0
-
- def num_entries(self):
- return 0
-
- def write(self, stream):
- pass
-
-class RegKeyList():
- def __len__(self):
- return 0
-
- def num_entries(self):
- return 0
-
- def write(self, stream):
- pass
-
-class LinkList:
- def __init__(self, cab_header):
- self.cab_header = cab_header
- self.links = []
- self.length = 0
- self.index = 1
-
- def __len__(self):
- return self.length
-
- def num_entries(self):
- return len(self.links)
-
- # Determine the target type (dir/file) and ID:
-
- def __find_target(self, target):
- file_id = self.cab_header.file_list.find(target)
-
- if file_id is not None:
- return 1, file_id
-
- dir_list = self.cab_header.get_section(DirectoryList)
- dir_id = dir_list.find(target)
-
- if dir_id is not None:
- return 0, dir_id
-
- raise Exception("Link target '%s' not found" % target)
-
- def add(self, target, destination):
-
- target_type, target_id = self.__find_target(target)
-
- dest_path = destination.split("\\")
-
- # Leading \:
-
- if dest_path[0] == "":
- dest_path = dest_path[1:]
-
- # %CEn% to specify the install root is handled differently for
- # links than it is for files/dirs.
-
- match = re.match(r"\%CE(\d+)\%", dest_path[0])
-
- if match:
- base_dir = int(match.group(1))
- dest_path = dest_path[1:]
- else:
- base_dir = 0
-
- # Map dirs that make up the path to strings.
-
- dictionary = self.cab_header.dictionary
- dest_path = list(map(lambda x: dictionary.get(x), dest_path))
-
- self.links.append((self.index, target_type, target_id,
- base_dir, dest_path))
- self.index += 1
- self.length += 14 + 2 * len(dest_path)
-
- def write(self, stream):
-
- for i, target_type, target_id, base_dir, dest_path in self.links:
-
- write_int16(stream, i)
- write_int16(stream, 0)
- write_int16(stream, base_dir)
- write_int16(stream, target_id)
- write_int16(stream, target_type)
- write_int16(stream, 2 * len(dest_path) + 2)
-
- for subdir in dest_path:
- write_int16(stream, subdir)
-
- write_int16(stream, 0)
-
-class CabHeaderFile:
- def __init__(self):
- self.dictionary = StringDictionary(self)
- self.directory_list = DirectoryList(self)
- self.file_list = FileList(self)
-
- self.sections = [
- HeaderSection(self),
- self.dictionary,
- self.directory_list,
- self.file_list,
- RegHiveList(),
- RegKeyList(),
- LinkList(self)
- ]
-
- def set_meta(self, *args):
- header_section = self.get_section(HeaderSection)
- header_section.set_meta(*args)
-
- def add_file(self, filename, file_no, flags=0):
- files_section = self.get_section(FileList)
- files_section.add(filename, file_no, flags)
-
- def add_link(self, target, destination):
- links_section = self.get_section(LinkList)
- links_section.add(target, destination)
-
- def get_section(self, section_class):
- for section in self.sections:
- if isinstance(section, section_class):
- return section
- else:
- raise Exception("Can't find section of class %s" % section_class)
-
- def get_section_offset(self, section):
- offset = 0
-
- for s in self.sections:
- if section is s:
- return offset
- offset += len(s)
- else:
- raise Exception("Section %s not found in list")
-
- def __len__(self):
- result = 0
- for s in self.sections:
- result += len(s)
- return result
-
- def write(self, stream):
- old_pos = 0
- for section in self.sections:
- section.write(stream)
- pos = stream.tell()
- if pos != old_pos + len(section):
- print(section)
- raise Exception("Section is %i bytes long, but %i written" % \
- (len(section), pos - old_pos))
- old_pos = pos
-
-class CabFile:
- def __init__(self, config):
- self.cab_header = CabHeaderFile()
-
- self.__process_meta(config)
- self.__process_files(config["files"])
-
- if "links" in config:
- self.__process_links(config["links"])
-
- # Metadata:
-
- def __process_meta(self, config):
- arch = config.get("arch") or "strongarm"
- app_name = config.get("app_name")
- provider = config.get("provider")
- unsupported = config.get("unsupported") or ""
-
- if app_name is None or provider is None:
- raise Exception("Application name and provider must be specified")
-
- self.cab_header.set_meta(arch, app_name, provider, unsupported)
- self.app_name = app_name
-
- # Get the shortened 8.3 filename used for the specified file
- # within the CAB.
-
- def __shorten_name(self, filename, file_no):
-
- # Strip down to base filename without extension:
-
- basename = os.path.basename(filename)
-
- if "." in basename:
- basename = basename.rpartition(".")[0]
-
- # Remove non-alphanumeric characters:
-
- def only_alnum(x):
- if x.isalnum():
- return x
- else:
- return ""
-
- cleaned_name = "".join(map(only_alnum, basename))
- short_name = cleaned_name[0:8]
-
- if len(short_name) < 8:
- short_name = "0" * (8 - len(short_name)) + short_name
-
- return "%s.%03i" % (short_name, file_no)
-
- # Process the list of files to install:
-
- def __process_files(self, files):
- self.files = [ self.app_name ]
-
- for filename, source_file in files.items():
- file_no = len(self.files)
- filename = expand_path(filename)
- self.cab_header.add_file(filename, file_no)
- self.files.append(source_file)
-
- # Process the list of links:
-
- def __process_links(self, links):
- for destination, target in links.items():
- target = expand_path(target)
- destination = expand_path(destination)
- self.cab_header.add_link(target, destination)
-
- # Write the header file:
-
- def __write_header(self, dir):
-
- basename = self.__shorten_name(self.files[0], 0)
- filename = os.path.join(dir, basename)
-
- stream = open(filename, "wb")
- self.cab_header.write(stream)
- stream.close()
-
- return [ filename ]
-
- # Write the files:
-
- def __write_files(self, dir):
-
- result = []
-
- for file_no in range(1, len(self.files)):
- source_file = self.files[file_no]
- basename = self.__shorten_name(source_file, file_no)
- filename = os.path.join(dir, basename)
-
- shutil.copy(source_file, filename)
- result.append(filename)
-
- return result
-
- # Output to a file:
-
- def write(self, filename):
-
- temp_dir = tempfile.mkdtemp()
-
- header = self.__write_header(temp_dir)
- files = self.__write_files(temp_dir)
- files.reverse()
-
- args = [ "lcab", "-n" ] + header + files + [ filename ]
-
- os.spawnlp(os.P_WAIT, "lcab", *args)
-
- # Clean up:
-
- for tmpfile in header + files:
- os.remove(tmpfile)
- os.rmdir(temp_dir)
-
-def expand_path(filename):
-
- # Replace Unix-style / path separators with DOS-style \
-
- filename = filename.replace("/", "\\")
-
- # Expand $(xyz) path variables to their Windows equivalents:
-
- def replace_var(match):
- var_name = match.group(1)
-
- if not var_name in DIR_VARIABLES:
- raise Exception("Unknown variable '%s'" % var_name)
- else:
- return DIR_VARIABLES[var_name]
-
- return re.sub(r"\$\((.*?)\)", replace_var, filename)
-
-def read_config_file(filename):
- f = open(filename)
-
- data = f.readlines()
- data = "".join(data)
-
- f.close()
-
- prog = compile(data, filename, "exec")
- result = {}
- eval(prog, result)
-
- return result
-
-# List the files that the output CAB depends on.
-
-def print_dependencies(filename):
- config = read_config_file(filename)
-
- files_list = config["files"]
-
- for dest, source_file in files_list.items():
- print(source_file)
-
-if len(sys.argv) < 3:
- print("Usage: %s <config file> <output file>" % sys.argv[0])
- sys.exit(0)
-
-if sys.argv[1] == "-d":
- print_dependencies(sys.argv[2])
-else:
- config = read_config_file(sys.argv[1])
-
- cab_file = CabFile(config)
- cab_file.write(sys.argv[2])
-
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -40,8 +40,7 @@
z_native.c z_zone.h
@PROGRAM_PREFIX@server_SOURCES=$(COMMON_SOURCE_FILES) $(DEDSERV_FILES)
-@PROGRAM_PREFIX@server_LDADD = $(top_builddir)/wince/libc_wince.a \
- @LDFLAGS@ @SDLNET_LIBS@
+@PROGRAM_PREFIX@server_LDADD = @LDFLAGS@ @SDLNET_LIBS@
# Source files used by the game binaries (chocolate-doom, etc.)
@@ -137,7 +136,6 @@
$(FEATURE_DEHACKED_SOURCE_FILES)
EXTRA_LIBS = \
- $(top_builddir)/wince/libc_wince.a \
$(top_builddir)/textscreen/libtextscreen.a \
$(top_builddir)/pcsound/libpcsound.a \
$(top_builddir)/opl/libopl.a \
@@ -200,7 +198,6 @@
@PROGRAM_PREFIX@setup_SOURCES=$(SETUP_FILES) $(COMMON_SOURCE_FILES)
endif
@PROGRAM_PREFIX@setup_LDADD = setup/libsetup.a \
- $(top_builddir)/wince/libc_wince.a \
$(top_builddir)/textscreen/libtextscreen.a \
@LDFLAGS@ @SDL_LIBS@ @SDLMIXER_LIBS@ @SDLNET_LIBS@
--- a/src/d_iwad.c
+++ b/src/d_iwad.c
@@ -536,14 +536,7 @@
AddDoomWadPath();
-#if defined(_WIN32_WCE)
-
- // Windows CE locations:
-
- AddIWADDir("\\Storage Card");
- AddIWADDir(getenv("HOME"));
-
-#elif defined(_WIN32)
+#ifdef _WIN32
// Search the registry and find where IWADs have been installed.
--- a/src/doomtype.h
+++ b/src/doomtype.h
@@ -64,13 +64,6 @@
#define PACKEDATTR
#endif
-// Windows CE is missing some vital ANSI C functions. We have to
-// use our own replacements.
-
-#ifdef _WIN32_WCE
-#include "libc_wince.h"
-#endif
-
// C99 integer types; with gcc we just use this. Other compilers
// should add conditional statements that define the C99 types.
--- a/src/i_main.c
+++ b/src/i_main.c
@@ -140,15 +140,6 @@
myargc = argc;
myargv = argv;
-#ifdef _WIN32_WCE
-
- // Windows CE has no environment, but SDL provides an implementation.
- // Populate the environment with the values we normally find.
-
- PopulateEnvironment();
-
-#endif
-
// Only schedule on a single core, if we have multiple
// cores. This is to work around a bug in SDL_mixer.
--- a/src/i_system.c
+++ b/src/i_system.c
@@ -94,51 +94,6 @@
{
}
-#ifdef _WIN32_WCE
-
-// Windows CE-specific auto-allocation function that allocates the zone
-// size based on the amount of memory reported free by the OS.
-
-static byte *AutoAllocMemory(int *size, int default_ram, int min_ram)
-{
- MEMORYSTATUS memory_status;
- byte *zonemem;
- size_t available;
-
- // Get available physical RAM. We leave one megabyte extra free
- // for the OS to keep running (my PDA becomes unstable if too
- // much RAM is allocated)
-
- GlobalMemoryStatus(&memory_status);
- available = memory_status.dwAvailPhys - 2 * 1024 * 1024;
-
- // Limit to default_ram if we have more than that available:
-
- if (available > default_ram * 1024 * 1024)
- {
- available = default_ram * 1024 * 1024;
- }
-
- if (available < min_ram * 1024 * 1024)
- {
- I_Error("Unable to allocate %i MiB of RAM for zone", min_ram);
- }
-
- // Allocate zone:
-
- *size = available;
- zonemem = malloc(*size);
-
- if (zonemem == NULL)
- {
- I_Error("Failed when allocating %i bytes", *size);
- }
-
- return zonemem;
-}
-
-#else
-
// Zone memory auto-allocation function that allocates the zone size
// by trying progressively smaller zone sizes until one is found that
// works.
@@ -180,8 +135,6 @@
return zonemem;
}
-
-#endif
byte *I_ZoneBase (int *size)
{
--- a/src/i_video.c
+++ b/src/i_video.c
@@ -308,17 +308,6 @@
if (fullscreen)
return true;
-#ifdef _WIN32_WCE
-
- // On Windows CE, always grab input. This is because hardware
- // button events are only acquired by SDL when the input is grabbed.
- // Almost all Windows CE devices should have touch screens anyway,
- // so this shouldn't affect mouse grabbing behavior.
-
- return true;
-
-#else
-
// Don't grab the mouse if mouse input is disabled
if (!usemouse || nomouse)
@@ -340,8 +329,6 @@
{
return true;
}
-
-#endif /* #ifndef _WIN32_WCE */
}
void I_SetGrabMouseCallback(grabmouse_callback_t func)
--- a/src/m_controls.c
+++ b/src/m_controls.c
@@ -370,71 +370,7 @@
}
}
-#ifdef _WIN32_WCE
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-
-static int SystemHasKeyboard(void)
-{
- HKEY key;
- DWORD valtype;
- DWORD valsize;
- DWORD result;
-
- if (RegOpenKeyExW(HKEY_CURRENT_USER,
- L"\\Software\\Microsoft\\Shell", 0,
- KEY_READ, &key) != ERROR_SUCCESS)
- {
- return 0;
- }
-
- valtype = REG_SZ;
- valsize = sizeof(DWORD);
-
- if (RegQueryValueExW(key, L"HasKeyboard", NULL, &valtype,
- (LPBYTE) &result, &valsize) != ERROR_SUCCESS)
- {
- result = 0;
- }
-
- // Close the key
-
- RegCloseKey(key);
-
- return result;
-}
-
//
-// Apply custom defaults for Windows CE.
-//
-
-static void M_ApplyWindowsCEDefaults(void)
-{
- // If the system doesn't have a keyboard, patch the default
- // configuration to use the hardware keys.
-
- if (!SystemHasKeyboard())
- {
- key_use = KEY_F1;
- key_fire = KEY_F2;
- key_menu_activate = KEY_F3;
- key_map_toggle = KEY_F4;
-
- key_menu_help = 0;
- key_menu_save = 0;
- key_menu_load = 0;
- key_menu_volume = 0;
-
- key_menu_confirm = KEY_ENTER;
- key_menu_back = KEY_F2;
- key_menu_abort = KEY_F2;
- }
-}
-
-#endif
-
-//
// Apply custom patches to the default values depending on the
// platform we are running on.
//
@@ -441,8 +377,6 @@
void M_ApplyPlatformDefaults(void)
{
-#ifdef _WIN32_WCE
- M_ApplyWindowsCEDefaults();
-#endif
+ // no-op. Add your platform-specific patches here.
}
--- a/src/setup/display.c
+++ b/src/setup/display.c
@@ -22,10 +22,6 @@
#include <stdlib.h>
#include <string.h>
-#ifdef _WIN32_WCE
-#include "libc_wince.h"
-#endif
-
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
--- a/src/setup/execute.c
+++ b/src/setup/execute.c
@@ -28,10 +28,6 @@
#include <sys/types.h>
-#if defined(_WIN32_WCE)
-#include "libc_wince.h"
-#endif
-
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
--- a/src/setup/mainmenu.c
+++ b/src/setup/mainmenu.c
@@ -23,10 +23,6 @@
#include <stdlib.h>
#include <string.h>
-#ifdef _WIN32_WCE
-#include "libc_wince.h"
-#endif
-
#include "config.h"
#include "textscreen.h"
--- a/textscreen/txt_sdl.c
+++ b/textscreen/txt_sdl.c
@@ -178,11 +178,7 @@
if (modes == NULL || modes == (SDL_Rect **) -1 || *modes == NULL)
{
-#ifdef _WIN32_WCE
- font = &small_font;
-#else
font = &main_font;
-#endif
return;
}
--- a/wince/.gitignore
+++ /dev/null
@@ -1,5 +1,0 @@
-Makefile
-Makefile.in
-.deps
-tags
-TAGS
--- a/wince/Makefile.am
+++ /dev/null
@@ -1,17 +1,0 @@
-
-noinst_LIBRARIES=libc_wince.a
-
-if WINDOWS_CE
-
-libc_wince_a_SOURCES = \
- libc_wince.h \
- env.c env.h \
- errno.c errno.h \
- fileops.c fileops.h
-
-else
-
-libc_wince_a_SOURCES = dummy.c
-
-endif
-
--- a/wince/README
+++ /dev/null
@@ -1,8 +1,0 @@
-Windows CE is a horribly crippled operating system. The poor thing doesn't
-even include a complete implementation of the ANSI standard C library. This
-is a mini-library called libc_wince that implements some of the missing
-library functions. I've only implemented those necessary to get Chocolate
-Doom to compile.
-
-On non-Windows CE platforms it is just built as an empty library.
-
--- a/wince/dummy.c
+++ /dev/null
@@ -1,8 +1,0 @@
-
-// Dummy source file so that the Windows CE workaround library is
-// not empty. Some platforms don't like empty libraries.
-
-void DummyWindowsCEFunction(void)
-{
-}
-
--- a/wince/env.c
+++ /dev/null
@@ -1,92 +1,0 @@
-//
-// "Extension" implementation of getenv for Windows CE.
-//
-// I (Simon Howard) release this file to the public domain.
-//
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <windows.h>
-#include <lmcons.h>
-#include <secext.h>
-#include <shlobj.h>
-
-#include "env.h"
-
-static void WCharToChar(wchar_t *src, char *dest, int buf_len)
-{
- unsigned int len;
-
- len = wcslen(src) + 1;
-
- WideCharToMultiByte(CP_OEMCP, 0, src, len, dest, buf_len, NULL, NULL);
-}
-
-static void SetEnvironment(char *env_string, wchar_t *wvalue)
-{
- char value[MAX_PATH + 10];
- int env_len;
-
- // Construct the string for putenv: NAME=value
-
- env_len = strlen(env_string);
- strcpy(value, env_string);
-
- WCharToChar(wvalue, value + env_len, sizeof(value) - env_len);
-
- // Set the environment variable:
-
- putenv(value);
-}
-
-static int ReadOwnerName(wchar_t *value, DWORD len)
-{
- HKEY key;
- DWORD valtype;
-
- if (RegOpenKeyExW(HKEY_CURRENT_USER,
- L"\\ControlPanel\\Owner", 0,
- KEY_READ, &key) != ERROR_SUCCESS)
- {
- return 0;
- }
-
- valtype = REG_SZ;
-
- if (RegQueryValueExW(key, L"Name", NULL, &valtype,
- (LPBYTE) value, &len) != ERROR_SUCCESS)
- {
- return 0;
- }
-
- // Close the key
-
- RegCloseKey(key);
-
- return 1;
-}
-
-void PopulateEnvironment(void)
-{
- wchar_t temp[MAX_PATH];
-
- // Username:
-
- if (ReadOwnerName(temp, MAX_PATH))
- {
- SetEnvironment("USER=", temp);
- SetEnvironment("USERNAME=", temp);
- }
-
- // Temp dir:
-
- GetTempPathW(MAX_PATH, temp);
- SetEnvironment("TEMP=", temp);
-
- // Use My Documents dir as home:
-
- SHGetSpecialFolderPath(NULL, temp, CSIDL_PERSONAL, 0);
- SetEnvironment("HOME=", temp);
-}
-
--- a/wince/env.h
+++ /dev/null
@@ -1,24 +1,0 @@
-//
-// "Extension" implementation of getenv for Windows CE.
-//
-// I (Simon Howard) release this file to the public domain.
-//
-
-#ifndef WINCE_ENV_H
-#define WINCE_ENV_H
-
-// SDL provides an implementation of getenv/putenv:
-
-#include "SDL_getenv.h"
-
-#ifndef getenv
-#define getenv SDL_getenv
-#endif
-#ifndef putenv
-#define putenv SDL_putenv
-#endif
-
-extern void PopulateEnvironment(void);
-
-#endif /* #ifndef WINCE_ENV_H */
-
--- a/wince/errno.c
+++ /dev/null
@@ -1,20 +1,0 @@
-//
-// "Extension" implementation of errno.h for Windows CE.
-//
-// I (Simon Howard) release this file to the public domain.
-//
-
-#include <windows.h>
-
-#include "errno.h"
-
-// This should really be a thread-local variable. Oh well.
-
-static int my_errno;
-
-int *_GetErrno()
-{
- my_errno = GetLastError();
- return &my_errno;
-}
-
--- a/wince/errno.h
+++ /dev/null
@@ -1,17 +1,0 @@
-//
-// "Extension" implementation of errno.h for Windows CE.
-//
-// I (Simon Howard) release this file to the public domain.
-//
-
-#ifndef WINCE_ERRNO_H
-#define WINCE_ERRNO_H
-
-#define EISDIR 21 /* Is a directory */
-
-extern int *_GetErrno();
-
-#define errno (*_GetErrno())
-
-#endif /* #ifndef WINCE_ERROR_H */
-
--- a/wince/fileops.c
+++ /dev/null
@@ -1,49 +1,0 @@
-//
-// "Extension" implementation of ANSI C file functions for Windows CE.
-//
-// I (Simon Howard) release this file to the public domain.
-//
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <windows.h>
-
-#include "fileops.h"
-
-int remove(const char *pathname)
-{
- wchar_t temp[MAX_PATH + 1];
-
- MultiByteToWideChar(CP_OEMCP,
- 0,
- pathname,
- strlen(pathname) + 1,
- temp,
- MAX_PATH);
-
- return DeleteFileW(temp) != 0;
-}
-
-int rename(const char *oldpath, const char *newpath)
-{
- wchar_t oldpath1[MAX_PATH + 1];
- wchar_t newpath1[MAX_PATH + 1];
-
- MultiByteToWideChar(CP_OEMCP,
- 0,
- oldpath,
- strlen(oldpath) + 1,
- oldpath1,
- MAX_PATH);
- MultiByteToWideChar(CP_OEMCP,
- 0,
- newpath,
- strlen(newpath) + 1,
- newpath1,
- MAX_PATH);
-
- return MoveFileW(oldpath1, newpath1);
-}
-
--- a/wince/fileops.h
+++ /dev/null
@@ -1,14 +1,0 @@
-//
-// "Extension" implementation of ANSI C file functions for Windows CE.
-//
-// I (Simon Howard) release this file to the public domain.
-//
-
-#ifndef WINCE_FILEOPS_H
-#define WINCE_FILEOPS_H
-
-int remove(const char *pathname);
-int rename(const char *oldpath, const char *newpath);
-
-#endif /* #ifndef WINCE_FILEOPS_H */
-
--- a/wince/libc_wince.h
+++ /dev/null
@@ -1,4 +1,0 @@
-
-#include "env.h"
-#include "fileops.h"
-