Wrong io.h
Posted: Tue 23 Jan, 2018 6:58 am
I'm currently trying to figure out how to "unify" the build process between Linux and Windows by making the MSYS2/MinGW steps much more akin to the Linux "configure-make-install" path. I just submitted a patch that allows MSYS2 (at least) users to get past the configure step. Now I'm stuck at make. For some reason, when I try running make in MSYS2, I get an issue with 808x.c:
I followed the error and it seems like the referenced unistd.h references the system io.h... in theory. In practice, it seems to be grabbing the one from src/io.h. I'm very unfamiliar with the C/C++ build process, and my Google skills have failed me miserably. Any suggestions on how to get past this?
Note: I double checked the Linux build on an Ubuntu Mate laptop and the same compile line does not cause the same error. This seems specific to MinGW, somehow.
Code: Select all
gcc -DPACKAGE_NAME=\"PCem\" -DPACKAGE_TARNAME=\"pcem\" -DPACKAGE_VERSION=\"v12\" -DPACKAGE_STRING=\"PCem\ v12\" -DPACKAGE_BUGREPORT=\"Sarah\ Walker\ \<pcem@pcem-emulator.co.uk\>\" -DPACKAGE_URL=\"\" -DPACKAGE=\"pcem\" -DVERSION=\"v12\" -DHAVE_LIBPTHREAD=1 -DHAVE_LIBGL=1 -DHAVE_LIBOPENAL=1 -I. -IC:/Users/Matt/Downloads/EmuBuild/mingw32/lib/wx/include/msw-unicode-3.0 -IC:/Users/Matt/Downloads/EmuBuild/mingw32/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXMSW__ -mthreads -fpermissive -I/mingw32/include/SDL2 -Dmain=SDL_main -msse2 -O3 -MT pcem-808x.o -MD -MP -MF .deps/pcem-808x.Tpo -c -o pcem-808x.o `test -f '808x.c' || echo './'`808x.c
cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C
In file included from C:/Users/Matt/Downloads/EmuBuild/mingw32/i686-w64-mingw32/include/unistd.h:10:0,
from 808x.c:12:
./io.h:3:20: error: unknown type name 'uint16_t'
void io_sethandler(uint16_t base, int size,
^~~~~~~~
./io.h:4:20: error: unknown type name 'uint8_t'
uint8_t (*inb)(uint16_t addr, void *priv),
^~~~~~~
./io.h:5:20: error: unknown type name 'uint16_t'
uint16_t (*inw)(uint16_t addr, void *priv),
^~~~~~~~
./io.h:6:20: error: unknown type name 'uint32_t'
uint32_t (*inl)(uint16_t addr, void *priv),
^~~~~~~~
./io.h:7:33: error: unknown type name 'uint16_t'
void (*outb)(uint16_t addr, uint8_t val, void *priv),
^~~~~~~~
./io.h:7:48: error: unknown type name 'uint8_t'
void (*outb)(uint16_t addr, uint8_t val, void *priv),
^~~~~~~
./io.h:8:20: error: expected ';', ',' or ')' before 'void'
void (*outw)(uint16_t addr, uint16_t val, void *priv),
^~~~
./io.h:12:23: error: unknown type name 'uint16_t'
void io_removehandler(uint16_t base, int size,
^~~~~~~~
./io.h:13:20: error: unknown type name 'uint8_t'
uint8_t (*inb)(uint16_t addr, void *priv),
^~~~~~~
./io.h:14:20: error: unknown type name 'uint16_t'
uint16_t (*inw)(uint16_t addr, void *priv),
^~~~~~~~
./io.h:15:20: error: unknown type name 'uint32_t'
uint32_t (*inl)(uint16_t addr, void *priv),
^~~~~~~~
./io.h:16:33: error: unknown type name 'uint16_t'
void (*outb)(uint16_t addr, uint8_t val, void *priv),
^~~~~~~~
./io.h:16:48: error: unknown type name 'uint8_t'
void (*outb)(uint16_t addr, uint8_t val, void *priv),
^~~~~~~
./io.h:17:20: error: expected ';', ',' or ')' before 'void'
void (*outw)(uint16_t addr, uint16_t val, void *priv),
^~~~
808x.c: In function 'dumpregs':
808x.c:511:9: warning: implicit declaration of function 'chdir' [-Wimplicit-function-declaratio ]
chdir(logs_path);
^~~~~
make[1]: *** [Makefile:938: pcem-808x.o] Error 1
Note: I double checked the Linux build on an Ubuntu Mate laptop and the same compile line does not cause the same error. This seems specific to MinGW, somehow.