Set up Cygwin for Deviation development

More
31 Aug 2015 01:31 - 01 Sep 2015 15:34 #37321 by reedlai
When I was new to this project, most of the environment is MinGW or Linux. Although I am familiar with UNIX-like environments (Linux, FreeBSD, etc.), but I am using Windows 8.1 and there is not a UNIX box near me. So I have to make a choice between MinGW or Cygwin. After some studies, there are reasons make me to try setting up Cygwin for Deviation
  1. I am not familiar with MinGW but Cygwin.
  2. I use vim, but the mnitty of MinGW does not work well with the vim DOS batch scripts.
  3. Cygwin setup program selects and installs those packages related and required to package picked by user.
  4. There are lot of useful/powerful GNU software provided by Cygwin

Set up Cygwin

There are 32 and 64-bit versions for Windows, both work well. I have both versions installed already in my Windows 8.1 box. The 32-bit is maturer in some ways, so I pick it to work for Deviation. It is pretty easy to install Cygwin, download and follow its direction. Get Cygwin installer

The article Development on Windows describes there FLTK and PortAudio are required for Deviation development. Cygwin has them already. Run Cygwin setup program, i.e. setup-x86 or setup-x86_64, set up search filters (see red mark in screenshot). Click on package’s ‘New’ column to cycle Skip or version number if the package is not yet installed. Keep, Reinstall, Uninstall, or another version number if there is a version already installed.

Install all FLTK items in Libs @ Default. I have two installed:
1.3.3-1 / 400k / libfltk-devel: Fast Light Toolkit
1.3.3-1 / 452k / libfltk1.3: Fast Light Toolkit

Install all PortAudio items in Libs @ Default. I have four installed:
19.20140130-1 / 14k / libportaudio-devel: Cross platform audio I/O library
19.20140130-1 / 29k / libportaudio2: Cross platform audio I/O library
19.20140130-1 / 16k / libportaudiocpp-devel: Cross platform audio I/O library
19.20140130-1 / 11k / libportaudiocpp0-devel: Cross platform audio I/O library

Get Deviation Source Code

My git is installed from Cygwin package also. It works well with mine and other Bitbucket projects, but fail to clone the Deviation repository constantly.
$ git clone https://bitbucket.org/deviationtx/deviation
Cloning into 'deviation'...
remote: Not Found
fatal: repository 'https://bitbucket.org/deviationtx/deviation/' not found
I do not dig this problem and eventually have the Deviation clone by using Atlassian SourceTree . It will be nice and much convenient if the git command line works.

Work on libopencm3

The GNU make stops work on the AR procedure about ‘libopencm3_stm32f0.a‘. When I looked into this problem found the source code of Deviation use ‘#include <...>‘ to include headers of libopencm3, the ‘<...>‘ tells gcc to look for headers from its system resource, so the gcc -I flag for libopencm3 will not work in Cygwin environment. There are lot of c files contain the libopencm3 heads. To modify those files can be really tedious, so I decide to install libopencm3 libraries system-wide.

When making libopencm3, AR did not create the specified archive somehow from the Makefile procedure, but would work if make it separately. To work on the libopencm3 problem may be tedious but not difficult if there is a road map on hand. I wrote a note of installing libopencm3 as a system resource for ARM gcc. Read Install libopencm3 for Cygwin

Once the system-wide libopencm3 is installed, the one comes as a subset of the Deviation is no longer needed and can be removed safely. Modify ‘src/target/common/devo/Makefile.inc‘ of Deviation to skip libopencm3 from make, comment out target LIBOPENCM3, remove flag -I$(SDIR)/libopencm3/include from CFLAGS.

Something is missing?

Looks like everything is ready, but make stops work again when running extract_strings.pl and check_string_size.pl. Says 'No such file or directory'. There is no issue about the Perl scripts. It fails because of the xgettext can not be found. The xgettext is a utility of gettext which can be installed from Cygwin packages also:
0.19.4-1 / 1501k / gettext-devel: GNU Internationalization development utilites

Done

This time, make done its job. There may be issues in other targets, but I have the default devo8 target and the devo10 target made successfully, they seem ready to go.

I hope this post helps people who want to use Cygwin environment for Deviation development. To keep it from mess, I removed screenshots and some console text. Those details can be found on my blog
  1. Set up Cygwin for Deviation development
  2. Install libopencm3 for Cygwin
Last edit: 01 Sep 2015 15:34 by reedlai.

Please Log in or Create an account to join the conversation.

More
31 Aug 2015 11:18 #37327 by Antfurn
Replied by Antfurn on topic Set up Cygwin for Deviation development
Thanks, I hope to use this guide to setup my own build env.

Please Log in or Create an account to join the conversation.

More
04 Sep 2015 02:23 - 04 Sep 2015 02:26 #37418 by reedlai
Replied by reedlai on topic Set up Cygwin for Deviation development
The g++ is required for building emu_ targets. Do not install g++ 4.9.2 that has issue about failing to find system headers. The 4.9.3 is good to work
4.9.3-1 / 7,535k / gcc-g++: GNU Compiler Collection (C++)

There is an executable file, e.g. emu_devo8.exe, created when make is done. The emu_ file needs X Window System (X11) to run. To install and configure Cygiwn/X, read
  1. Installing Cygwin/X
  2. Configuring Cygwin/X
  3. Manpage of XWIN
A screenshot of my desktop. The XWin works on multiwindow mode, and there are emu_devo8 and emu_devo10 running.
File Attachment:


Build Deviation Emulators on my blog
Last edit: 04 Sep 2015 02:26 by reedlai.

Please Log in or Create an account to join the conversation.

Time to create page: 0.033 seconds
Powered by Kunena Forum